如何发送块文件上传的自定义属性

How to send custom attribute for chunk file upload

我正在使用 blueimp 文件上传插件,但我不使用多个 files,但我不知道如何发送自定义属性。我想将所有这些自定义属性发送到 服务器 ,每个 chunk 没问题(我们如何发送 formData)。我们如何发送formData类似的,我可以发送属性吗?

var formdata = new formData();

formdata.append('filename',currentFile[i]);

formdata.append('filesize',currentFile[i].size);

注意:我想在chunks

中发送数据

这是我正在尝试的代码 jsfiddle(在 firefox 中完美打开):http://jsfiddle.net/davidchase03/ChJ9B/

HTML

<input id="fileupload" type="file" name="files[]" multiple>
<div class="progress">
    <div class="meter" style="width: 0%;"></div>
</div>
<div class="data"></div>

JavaScript

$(function () {
    $('#fileupload').fileupload({
        url: '/echo/json/',
        maxChunkSize: 1048576,
        maxRetries: 3,
        dataType: 'json',
        multipart: false,
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10),
                meter = $('.progress .meter'),
                percent = progress + '%';
            meter.css('width', percent).text(percent);
        },
        add: function (e, data) {
            data.context = $('<p/>').text('Uploading...').appendTo('.data');
            data.submit();
        },
        done: function (e, data) {
            data.context.text('Upload finished.');
        },
        fail: function (e, data) {
            data.context.text('Upload failed.');
            $('.progress').addClass('alert');
            console.warn('Error: ', data);

        }
    }).on('fileuploadchunksend', function (e, data) {
         // if (data.uploadedBytes === 3145728 ) return false;
    }).on('fileuploadchunkdone', function (e, data) {

    });
});

问题:让你明白这就是我想要的How to send custom data to server using jquery-file-uploader

请帮我提前谢谢!!!

您可以使用 headers 选项添加任何自定义信息

maxRetries: 3,
headers: {
   'myname': 'Tarun'
},
dataType: 'json',

然后你可以看到 headers 与每个块一起发送

区块 1

区块 2

然后在服务器上您可以提取这些信息并以您喜欢的方式使用它

您可以使用 headers 选项发送额外的自定义属性。 示例:

$(function () {
    $('#fileupload').fileupload({
        url: '/echo/json/',
        ...
        headers : {
           customAttribute: 'customValue'
        }
});

对于动态值,您可以使用 beforeSend 回调,如以下示例所述

$(function () {
    $('#fileupload').fileupload({
        url: '/echo/json/',
        ...
        beforeSend : function(xhr) {
           xhr.setRequestHeader("customAttribute", someCalculateValueFunction('customValue'));
        }
});
$('#fileupload').fileupload({
    formData: {customAttr: 'value'}
});