我正在尝试取消所有上传,以便调整客户端大小。我可以让一个或另一个工作,但不能同时工作。我一直在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)
答案 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