Javascript отправляет локальный файл в api

Я разрабатываю электронное приложение, которое должно вызывать api для замены (обновления) файла X на сервере файлом Y, который находится на моем компьютере. Пользователь загружает файл X с сервера, чтобы отредактировать его (на моем компьютере этот файл будет называться файлом Y). Когда пользователь заканчивает редактировать файл Y, я проверяю, отличаются ли оба файла X и Y, и вызываю api, чтобы заменить файл X файлом Y. Мне не нужно помещать файл Y в форму перед вызовом api, я хочу сделать это без формы. Только полезная нагрузка моего запроса отличается от того, что я ожидаю, в моих заголовках запросов нет проблем.

Я ожидаю, что будет что-то подобное Javascript отправляет локальный файл в api и я понял это Javascript отправляет локальный файл в api

Вот что я делаю

 const fs = require('fs');
  let fileY = fs.readFileSync(path.resolve('gitignore.txt'));
  let form = new FormData();
  form.append("type", "jur_document");
  form.append("file", fileY, 'gitignore.txt');
  form.append("saveActionType", "SAVEMAJOR");
  form.append("attributes", "MIMETYPE=text/plain");

  let settings = {
    "async": true,
    "url": `${Constante.URL}/documents`,
    "method": "POST",
    "type": "POST",
    "headers": {
      // "Content-Type": "text/plain",
      "Authorization": sessionStorage.getItem('authorization')
    },
    "processData": false,
    "contentType": false,
    "mimeType": "multipart/form-data",
    "data": form
  };

  $.ajax(settings)
    .done((response) => {
      console.info(response);
    }).fail(err => {
      console.info(err);
    });
}

Вы должны установить HTTP-заголовок для "Content-Type": "multipart/form-data"

Randy Casburn 14.05.2018 19:23

Я делаю это, но получаю тот же результат

billy boy 14.05.2018 19:26

Пожалуйста, перечитайте документацию jQuery.ajax(). У вас есть конфликтующие настройки в вашем объекте настроек, которые вызовут всевозможные проблемы. api.jquery.com/jquery.ajax

Randy Casburn 14.05.2018 19:34

Вот моя новая настройка, но она по-прежнему не принимает файл <pre> let settings = {"url": ${Constante.URL}/documents, "method": "POST", "type": "POST", "headers": {"Content -Type »:« multipart / form-data »,« Authorization »: sessionStorage.getItem ('authorization')},« processData »: false,« contentType »: false,« mimeType »:« text / plain »,« data » ": форма }; </pre>

billy boy 15.05.2018 12:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
774
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

я наконец получил решение Я читаю свой файл и создаю большой двоичный объект, который использую для воссоздания своего файла

  const fs = require('fs');
  let buffer = fs.readFileSync(`${app.getAppPath()}/test.txt`);
  let fileY = new File([new Uint8Array(buffer)], 'test.txt', {
    type: 'text/plain'
  });

  form.append("file", fileY);

и вот настройки ajax

  let settings = {
    "url": `${Constante.URL}/documents`,
    "type": "POST",
    "headers": {
      "Authorization": sessionStorage.getItem('authorization')
    },
    "processData": false,
    "contentType": false,
    "data": form
  };

Другие вопросы по теме