Мне нужно загрузить на URL файл, уведомленный как новое дополнение к папке, которую я просматриваю.Как мне сделать это без форм?
Я пишу базовый синхронизатор файлов, который использует настольное приложение Electron в качестве клиента, сервера Python и конечной точки AWS.Я использую назначенный URL-адрес для запросов на загрузку / загрузку и у меня есть chokidar для просмотра папки, настроенной для синхронизации.
Когда я получаю уведомление о добавлении через Chokidar, я звоню на свой сервер Python и получаю предварительно назначенный URL-адресдля загрузки.Эта часть работает нормально.
Как только я получу URL, мне нужно загрузить файл.У меня нет HTML-компонента, связанного с этой операцией (и я не хочу добавлять). Я прочитал, что могу загружать файл с помощью AJAX с данными форм, но для этого требуется столбец «данные».Как мне это заполнить?
watcher
.on('add', function(dir) {
console.log('File', dir, 'has been added');
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
results.innerHTML = '';
data = JSON.stringify({"operation": "uploadFile", "bucketName": "deadlinefighters", "fileDetails": {"fileName": dir.replace(/^.*[\\\/]/, '')}});
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
jsonResponse = JSON.parse(xhr.responseText);
var content;
fs.readFile(dir, function read(err, data) {
if (err) {
throw err;
}
content = data;
});
$.ajax({
url: jsonResponse["url"],
type: 'PUT',
data: content, //This is the part I do not know how to fill right
async: false,
success: function () {
results.innerHTML = "Uploaded!"
}
});
listObjectsinServer();
}
else if(xhr.status!=200) {
results.innerHTML = 'ERROR!';
}
};
xhr.send(data);
})
Я пробовал fs.readFile, но он тоже не работает.Основываясь на некоторых ответах SO, я поместил вызов AJAX внутрь, но даже это не сработало.Я чувствую, что могу неправильно понять это поле.