为什么我的数组缓冲区是空的服务器端?

我在 JavaScript 中有一个方法可以将二进制文件读取到 ArrayBuffer 并将其发送到 Jersey POST 方法:


function readAndSendBytes() {

    var file = document.getElementById("entityFileField").files[0],

        reader = new FileReader();

    var entityBytes = reader.readAsArrayBuffer(file);


    reader.onloadend = function () {

        alert(reader.result);

    }


    var xhr = new XMLHttpRequest();

    var url = "/api/upload/e2j";

    xhr.open("POST", url, true);

    xhr.setRequestHeader("Content-type", "application/octet-stream");

    xhr.responseType = "json";


    xhr.onload = function (e) {

        var response = xhr.response;

        alert(response);

    }


    xhr.send(reader.result);

}

球衣:


@Path("/upload")

public class ParserHandler {

    @POST

    @Path("/e2j")

    @Consumes(MediaType.APPLICATION_OCTET_STREAM)

    @Produces(MediaType.APPLICATION_JSON)

    public String entityToJsonTwoElectricBoogaloo(byte[] entityPayload) {

        System.out.println(entityPayload.length);

}

每当我将长度打印到控制台时,长度总是 0,而应该是 439。我做错了什么?


叮当猫咪
浏览 100回答 2
2回答

开心每一天1111

找到了解决办法!只是将除了文件和 FileReader 的发送和初始化之外的所有内容都移动到 xhr.onload 函数中!编辑:忘记发布我的解决方案。function postEntity() {    var output = document.getElementById("response");    var file = document.getElementById("entityFileField").files[0];    var jsonResponse;    var r = new FileReader();    r.onloadend = function(e) {        var data = r.result;        var xhr = new XMLHttpRequest();        var url = "/api/upload/entitytojson";        xhr.open("POST", url, true);        xhr.setRequestHeader("Content-type", "application/octet-stream");        xhr.responseType = "json";        xhr.onload = function (e) {            if (xhr.response != null) {                jsonResponse = JSON.stringify(xhr.response);                output.innerHTML = jsonResponse;            }            else {                alert("Invalid Entity File");            }        }        xhr.send(data);    }    r.readAsBinaryString(file);}

翻翻过去那场雪

无需使用文件阅读器,您只需使用 xhr 发送 blobfunction sendFile() {  var file = document.getElementById("entityFileField").files[0];  var xhr = new XMLHttpRequest();  var url = "/api/upload/e2j";  xhr.open("POST", url);  xhr.setRequestHeader("Content-type", "application/octet-stream");  xhr.responseType = "json";  xhr.onload = function (e) {    var response = xhr.response;    alert(response);  }  xhr.send(file);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java