Как загрузить файл на сервер, используя любую библиотеку узлов, особенно axios? - PullRequest
0 голосов
/ 03 июля 2018

Я использую команду CURL для загрузки файла на сервер, который создает проблемы в нескольких CLI. Только CLI, которые установлены CURL, работают нормально, когда я запускаю приложение узла.

let mnmPath = `http://xyz/api/123456/mnm-api`;
exec(`curl -X PUT -H "x-cdn-path:" ${mnmPath } --upload-file abcd.txt`, (error, stdout) => {
    if (error) {
      console.log({status: 1, message: 'Error while uploading Tarball to CDN'});
    }
    console.log({status: 0, message: 'CDN upload completed.'});
  });

1 Ответ

0 голосов
/ 03 июля 2018

Вам нужно как-то получить файл, в моем примере я предположил, что у вас есть средство выбора файлов, и вы можете получить доступ к данным из этого

Вы захотите отправить свой файл на сервер с помощью почтового запроса, а затем использовать обещания для перехвата или разрешения в зависимости от успешности запроса.

https://github.com/axios/axios

https://developer.mozilla.org/en-US/docs/Web/API/FormData

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

/*
   example of getting a file from DOM but as long as you
   pass a file to the function should be good 
*/


// es6 promise
function postFileToServer(file) {
  const formData = new FormData();
  formData.append("file", file);

  axios.post('/your-endpoint', formData)
    .then(res => /* do something with res*/ console.log(res))
    .catch(e => console.log('upload failed'))
}

function submit() {
  const file = document.getElementById("file").files;
  if (file.length > 0) {
    postFileToServer(file[0])
  }
}
input {display: block}
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.js"></script>
<input id="file" type="file" />
<button onclick="submit()">submit</button>

Из документов FormData

Интерфейс FormData позволяет легко создать набор пар ключ / значение, представляющих поля формы и их значения, которые затем можно легко отправить с помощью метода XMLHttpRequest.send (). Он использует тот же формат, что и форма, если бы тип кодировки был установлен на «multipart / form-data».

По сути, он форматирует его в легко манипулируемый объект, готовый для отправки во внешнюю службу. Вам нужно будет проверить, как служба, которую вы используете, хочет принять файл.

...