取消所有" jquery文件上传"使用客户端调整大小时上传不起作用

时间:2015-03-30 09:10:04

标签: jquery-file-upload

我正在尝试取消所有上传,以便调整客户端大小。我可以让一个或另一个工作,但不能同时工作。我一直在add方法中维护一堆xhr对象,但这需要直接调用data,submit()。我现在已将我的代码更改为挂钩到fileuploadadd并且调整大小效果很好,但取消只会取消一个文件(我假设最新的一个)。

目前的情况如下:

@addFile = (e, data) =>
  if @validate(data)
    this.transfers.push(data)
  else
    $result = $("<div class='error'>#{data.files[0].name} failed to upload. Files must be 5MB or less, and must be gif, jpg, or png format.</div>")
    $messageContainer.append($result)
    e.preventDefault()

$(input).fileupload
  disableImageResize: /Android(?!.*Chrome)|Opera/.test(window.navigator && navigator.userAgent)
  imageMaxWidth: 1024
  imageMaxHeight: 1024
  imageCrop: false
.bind('fileuploadadd', @addFile)

1 个答案:

答案 0 :(得分:0)

感谢dannio和他的post我能够解决这个问题。这是我最终得到的结果,它很有效:

class Uploader
  transfers: []
  cancelAll: ->
    for xhr in this.transfers
      xhr.abort() if xhr
    this.transfers = []
  configure: (input) ->
    configurator = this

    $(input).fileupload
      disableImageResize: /Android(?!.*Chrome)|Opera/.test(window.navigator && navigator.userAgent)
      imageMaxWidth: 1024
      imageMaxHeight: 1024
      imageCrop: false
      add: (e, data) =>
        if this.validate(data)
          $target = $(e.target)
          data.process(->
            return $target.fileupload('process', data)
          ).done(->
            configurator.transfers.push data.submit()
          )
  validate: (data) ->
    if typeof data.files[0].type != 'undefined' && data.files[0].size != 'undefined'
      valid = data.files[0].type in ["image/jpeg", "image/png", "image/gif"]
      valid && data.files[0].size <= 5242880
    else
      true