使用 Dropzone 将文件上传到 Google 驱动器

Upload files to Google Drive using Dropzone

这是我当前用于上传任务的代码:

$imagesDropzone.dropzone
  init: ->
    this.on 'sending', (file, xhr) ->
      xhr.setRequestHeader 'Content-Type', file.type

  url: 'https://www.googleapis.com/upload/drive/v2/files?uploadType=media'
  method: 'post'
  maxFileSize: 5
  paramName: 'images-dropzone-input'
  headers:
    'Authorization': "Bearer #{ uploadBundle.accessToken }"
  addRemoveLinks: 'dictRemoveFile'

而且它不起作用(所有上传的文件都损坏了)。 我知道我需要做这样的事情:

xhr.send file

但我不知道把这个电话打到哪里去。如何覆盖 Dropzone 的 send 行为?

看了Dropzone的源代码后,我想出了一个方法,就是重写实例方法uploadFiles:

imagesDropzoneInstance = new Dropzone '#imagesDropzone',
  url: 'https://www.googleapis.com/upload/drive/v2/files?uploadType=media'
  method: 'post'
  maxFileSize: 5
  paramName: 'images-dropzone-input'
  headers:
    'Authorization': "Bearer #{ uploadBundle.accessToken }"
  addRemoveLinks: 'dictRemoveFile'

imagesDropzoneInstance.uploadFiles = (files) ->
  uploadFiles: (files) ->

    .. copy the uploadFiles method of Dropzone, modify, then paste here..

    # Add the end:
    xhr.send files[0] # This overrides the default upload behavior.