首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让dropzone.js执行原始上载

让dropzone.js执行原始上载
EN

Stack Overflow用户
提问于 2015-11-07 02:01:37
回答 2查看 702关注 0票数 2

我喜欢使用dropzone.js将文件上传到类似REST的服务器。虽然dropzone.js可以将请求方法切换为PUT,但它仍然会发送类似于分片文件上传的内容。我的服务器期望原始数据作为单个ressource PUT方法的主体,因此上传的文件将包含多部分分隔符。

如何告诉dropzone.js将原始数据放入请求体,不多也不少?

EN

回答 2

Stack Overflow用户

发布于 2016-08-03 11:50:01

请参考我写的这个答案:https://stackoverflow.com/a/38734015/3746828

添加下面的选项,然后工作。

代码语言:javascript
复制
myDropzone.options.sending = function(file, xhr) {
  var _send = xhr.send;
  xhr.send = function() {
    _send.call(xhr, file);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2020-12-30 01:49:44

此方法也适用于分块文件。

代码语言:javascript
复制
const CHUNK_SIZE=10485760 //10MiB

Dropzone.options.dropzone = {
    method: "put",
    headers: {
        'Cache-Control': null,
        'X-Requested-With': null
    },
    filesizeBase: 1024,
    maxFilesize: 102400, // 100G in MB, max onedrive filesize
    chunking: true,
    chunkSize: CHUNK_SIZE,
    params: function(files, xhr, chunk) {
        if (chunk) {
            const chunk_start = (chunk.index * CHUNK_SIZE)
            xhr.setRequestHeader('Content-Range', 
                'bytes ' + chunk_start
                + '-' + (chunk_start + chunk.dataBlock.data.size - 1) 
                + '/' + files[0].size)
            var _send = xhr.send
            xhr.send = function() {
                _send.call(xhr, chunk.dataBlock.data)
            }
        } else {
            var _send = xhr.send
            xhr.send = function() {
                _send.call(xhr, files[0])
            }
        }
    }
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33572884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档