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

2024-04-19 22:38:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个curl命令,我想使用ajax来适应javascript。你知道吗

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

在javascript中,我多次使用FileReader()以文本、二进制字符串、数组缓冲区的形式读取文件,并对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);
}

Tags: pathapihttpdatavarupdateajaxfunction