繁体   English   中英

通过Jquery Ajax发送二进制数据

[英]Sending Binary data via Jquery Ajax

我想将带有jquery ajax的二进制发布数据发送到服务器后端,但是我无法成功完成。

成功发布这样的数据

成功结果

成功结果来源

我正在使用这样的代码

    var newBoundary = createRandom(16)
var datax  = '------WebKitFormBoundary'+ newBoundary +'\n'
    datax += 'Content-Disposition: form-data; name="queryOptionsDTO"; filename="blob"\n'
    datax += 'Content-Type: application/json\n\n'

    datax += '{"queryPage":{"initialPage":0,"pageSize":15},"sortInfo":{"sortFields":[{"propertyName":"updateDate","ascending":false}]},"queryParameterDTOs":[{"queryParameterType":"SIMILARITY","propertyName":"kurum.gorunenAd","similarityStrategy":"START"},{"queryParameterType":"SIMILARITY","propertyName":"markaAdi","similarityStrategy":"START"},{"queryParameterType":"EQUALITY","propertyName":"barkodNumarasi","value":"'+ barkod +'"},{"queryParameterType":"SIMILARITY","propertyName":"piyasayaArzIsmi","similarityStrategy":"START"},{"queryParameterType":"SIMILARITY","propertyName":"urunCinsi","similarityStrategy":"START"},{"queryParameterType":"CONTEXT","propertyName":"menseiUlkeAdi","similarityStrategy":"START"},{"queryParameterType":"EQUALITY","propertyName":"ucYasAltiCocuklarIcinUretilmis"},{"queryParameterType":"EQUALITY","propertyName":"ithalImalBilgisi"}],"queryTotal":false}\n'

    $.ajax({
     beforeSend: function(xhrObj){
            xhrObj.setRequestHeader("anonymousUtsToken",sessionStorage.getItem("anonymousUtsToken"));
            xhrObj.setRequestHeader("preferredLocale","tr-TR");
            xhrObj.setRequestHeader("Accept","application/json, text/plain, */*");
            xhrObj.setRequestHeader("Content-Type","multipart/form-data; boundary=----WebKitFormBoundary"+ newBoundary);
    },
        url: '/UTS/vat/rest/vatKozmetik/kozmetikUrunSorgula',
        type:"POST",
        dataType:"binary",
        data: datax,
        processData:false,
        contentType:false,
        success:function (data, status, req) {
            console.log( req);
        },
        error:function (req, status, error) {
            console.log(req);
        }
    });

但是这样的结果 在此处输入图片说明

我该如何发送数据; queryOptionsDTO :(二进制)

您可以使用FileReader对象读取文件的内容:

var fileReader = new FileReader();
fileReader.addEventListener('load', function () {
   var result = fileReader.result;
   $hidden.val(result);
});
fileReader.readAsDataURL(file);

FileReader对象异步读取文件,并在完成时触发回调。 使用此功能,您可以通过从文件阅读器中发布结果(基本64字符串)来获取文件的内容并将其发送到AJAX。

改编自我的原始博客文章

还有其他插件(例如Uploadify)可以提供此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM