Как загрузить файл на сервер, используя любую библиотеку узлов, особенно аксиомы?

63
3

Я использую команду 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.'});
});

спросил(а) 2021-01-19T19:31:09+03:00 6 месяцев назад
1
Решение
77

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

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

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".

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

ответил(а) 2021-01-19T19:31:09+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема