最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

未设置$ http post multipartform

运维笔记admin19浏览0评论

未设置$ http post multipart / form

未设置$ http post multipart / form

我正在为下面的帖子设置边界,但是在chrome上,边界看起来与我设置的边界不同。如何让我的自定义边界“--test”显示在请求有效负载上?

    var url = '/site/apkUpload';
    var deferred = $q.defer();
    console.log(formdata);
    $http.post(url, formdata, {
        processData: false,
        headers: {'Content-Type': "multipart/form-data;  charset=utf-8; boundary='--test'",
            'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
            'x-access-token': token,
            'cache-control': 'max-age=0'}
    })
        .success(function (response) {
            deferred.resolve(response);
        })
        .error(function (reject) {
            deferred.reject(reject);
        });
    return deferred.promise;

在chrome上请求有效负载:

------ WebKitFormBoundaryB5LjM2a6Qly3Xruj Content-Disposition:form-data; NAME = “软件包名”

helo1 ------ WebKitFormBoundaryB5LjM2a6Qly3Xruj Content-Disposition:form-data; NAME = “名”

......

非常感谢!

回答如下:

我可以用两种方式解释你的问题:

  1. 你正在谈论为什么你没有得到------在POST请求头中的WebKitFormBoundaryB5LjM2a6Qly3Xruj,你在请求​​有效载荷中得到它。我使用$ http.post发送多部分formdata时遇到了同样的问题(我也使用FormData)。解决方案是使用$ http(config)。我的理解$ http.post底层使用$ http()本身生成XMLHttpRequest对象,该对象应该运行multipart / form-data编码算法来设置有效负载和头部中的多部分边界。在$ http.post中,无论何时提供自定义配置对象,它都会覆盖算法生成的标头。 This答案也很有帮助。
  2. 如果您只想在content-header中添加自定义多部分边界,则可以通过在config对象中添加tranformRequest函数来实现: var url = '/site/apkUpload'; var deferred = $q.defer(); console.log(formdata); $http.post(url, formdata, { processData: false, transformRequest: function (data, headers) { var boundary = yourCustomLogic(); headers()['Content-Type'] = 'multipart/form-data;charset=utf- 8;boundary=' + boundary; }, 'Accept': ..., 'x-access-token': token, 'cache-control': 'max-age=0' }) .success( function () {...});

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论