Как отправить двоичную строку из JavaScript с помощью AJAX? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть команда curl, которую я хочу адаптировать к javascript с помощью ajax.

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 с различными настройками параметров ajaxдля processData, contentType, cache и т. д. несколько раз, но не удалось отправить правильную двоичную строку, как в примере с 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...