blueimp 的 jQuery-File-Upload - 附加标头

Posted

技术标签:

【中文标题】blueimp 的 jQuery-File-Upload - 附加标头【英文标题】:jQuery-File-Upload by blueimp - additional headers 【发布时间】:2012-04-18 04:52:11 【问题描述】:

我已经搜索了wiki,但找不到答案我应该将我的附加标头(例如Authorization 标头)放在 JS 脚本中的什么位置?在某处onSend/beforeSend 还是?

小部件链接: https://github.com/blueimp/jQuery-File-Upload

【问题讨论】:

【参考方案1】:

这就是我将文件名添加为标题的方式:

$('#upload_btn').fileupload(
    singleFileUploads: true,
    beforeSend: function(xhr, data) 
        var file = data.files[0];
        xhr.setRequestHeader('X-FileName', file.name);
    ,
);

【讨论】:

【参考方案2】:

您是否尝试通过“options.headers”对象设置额外的标题?

如果使用 forceIframeTransport: true 选项(在 IE 不支持 XHR 文件上传的情况下,您需要使用隐藏 iframe 方法),那么修改标头不是一个选项:https://github.com/blueimp/jQuery-File-Upload/issues/654

Options.headers:http://api.jquery.com/jQuery.ajax/

为文件上传插件设置的选项被传递给 jQuery.ajax() 并允许定义任何 ajax 设置或回调。

【讨论】:

您所说的“标题”选项在哪里? github.com/blueimp/jQuery-File-Upload/wiki/Options @Mark:从那个页面:“为文件上传插件设置的选项被传递给 jQuery.ajax()”。因此,除了列出的选项之外,您还可以使用api.jquery.com/jQuery.ajax 中记录的所有选项。但是,正如上述答案所解释的,并非所有这些都必须与 iframe 传输一起使用。【参考方案3】:

试试这样的..

beforeSend: function(xhr) 
    xhr.setRequestHeader("Accept", "application/json");
    xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");

【讨论】:

【参考方案4】:

答案很简单: 只需在添加部分添加您的自定义标题

  add: function (e, data)          

                data.headers='X-Session-Id' : data.files[0].name.hashCode();

                data.context = $('<button/>').text('Upload')
                .appendTo(document.body)

                .click(function () 
                    data.context = $('<p/>').text('Uploading...').replaceAll($(this));

                   // naam = naam.hashCode();
                    data.submit();
                );
        ,

或在初始化中:

$('#fileupload').fileupload(
        dataType: 'json',
        multipart : false,
        maxChunkSize: 10 * 1024 * 1024,
        headers:data.headers='X-Session-Id' : "TEST-HEADER",

【讨论】:

数据在 headers 中未定义:data.headers='X-Session-Id' : "TEST-HEADER", 这对我有用:标头: Authorization: 'Bearer' + $rootScope.app.token 【参考方案5】:

这是我的实现

onSend: function(e, options) 
  var accessToken = ...;

  options.headers = 
    'Authorization': 'Bearer ' + accessToken
  ;
,

【讨论】:

以上是关于blueimp 的 jQuery-File-Upload - 附加标头的主要内容,如果未能解决你的问题,请参考以下文章

Blueimp 上传插件进度条错误

将 csrf 令牌传递给 blueimp 文件上传

如何在webpack上使用blueimp-file-upload?

React Konva,blueimp-load-image 上传图像重新缩放

blueimp/jQuery-File-Upload 与 Laravel 如何集成?

Symfony 3.1 和 OneUploaderBundle + Blueimp = UploadListener 未被调用