Angular2 Http POST pad二进制传输

时间:2016-01-22 22:22:49

标签: ajax angular

我尝试使用带有Angular2的Http类的POST发送原始二进制数据(一片二进制文件)。但是在服务器端,接收的数据是填充的,可能是由于某些客户端JSON转换。例如,从浏览器发送的100000字节在服务器上读取为121201字节。

我可以使用jQuery.ajax实现这种原始二进制传输并保留在同一服务器上接收的字节数:

  $.ajax({
    type: "POST",
    url: "http://localhost:3000/analysis",
    data: blob,
    processData: false,
    contentType: 'application/octet-stream',
    error: function (err) {
      console.log(err);
    },
    success: function (data) {
      // do something heroic
    }
  });

正在使用FileReader API readAsBinaryString读取该文件。我怀疑我需要在Angular 1中做一些事情,你将transformRequest设置为空数组,这样字节就不会被强制转换为JSON。这是我的Angular2版本:

  getAnalysis = (headerBytes: any) => {
    let header = new Headers();
    header.append("Content-Type", "application/octet-stream");
    this.http.post("http://localhost:3000/analysis", headerBytes, {
        headers: header
    })
        .retry(3)
        // response data, not data being sent
        .map(responseData => responseData.json())
        .subscribe(
        data => this.result = data,
        err => this.logError(err),
        () => console.log("request complete")
        );

};

我可以在jQuery中尝试并做到这一点,但肯定有一种方法可以用新的热度做到这一点吗?

0 个答案:

没有答案