我需要将一个作为新添加通知的文件上传到URL,这是我正在监视的文件夹。没有表格我该怎么办?
我正在编写一个基本的文件同步器,该同步器使用Electron桌面应用程序作为客户端,Python服务器和AWS终端节点。我正在使用预先签名的URL进行上载/下载请求,并让chokidar监视了设置为同步的文件夹。
当我通过Chokidar收到有关“添加”的通知时,我将呼叫我的Python服务器并获得一个预签名的URL进行上传。这部分工作正常。
获得URL后,我需要上传文件。我没有与此操作关联的HTML组件(并且不想添加),我读到可以使用AJAX和formdata上载文件,但它需要“ data”列。我该如何填写?
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调用放入其中,但即使这样也没有用。我觉得我可能会误解这个领域。