如何使用ajax从javascript发送二进制字符串?

时间:2018-10-24 14:49:29

标签: javascript python curl

我有一个curl命令,我想使用ajax适应javascript。

curl -v -X 'POST' --data-binary @BinaryData.bin.txt "http://127.0.0.1:3000/api/v1/update_data"

在javascript中,我使用FileReader()并将文件读取为Text,BinaryString,Array Buffer,并为processData,contentType,cache等设置了不同的Ajax参数设置,但多次失败,但未成功发送正确的二进制字符串(如python示例)在下面。

我尝试在python中执行此操作,并且以下代码似乎按预期工作:

import requests
import os

path = os.path.normpath('d:/BinaryData.bin.txt')
file = open(path, 'rb')
data = file.read()

r = requests.post("http://127.0.0.1:3000/api/v1/update_data", data=data)

我在Javascript中缺少什么似乎无法从该文件发送正确的数据?

我尝试在javascript中进行操作的示例:

onFileSelected: function(evt) {
    var file = evt.target.files[0];
    var reader = new FileReader();
    reader.onload = (function (file) {
        return function(e) {
            var data = e.target.result;
            $.ajax({
              url: "http://127.0.0.1:3000/api/v1/update_data",
              data: data,
              contentType: 'application/octet-stream',
              processData: false,
              type: "POST",
              success: function () {
                // all good
              },
              error: function() {
                // failed
              }
            });
    }
    reader.readAsBinaryString(file);
}

0 个答案:

没有答案