我一直在非常努力地为我大学类(class)的期末项目制作网站。我很难理解为什么我的 $.ajax POST 请求将 NULL 发送到我的服务器,而它应该(并且在过去使用)发送我上传的文件的名称。
这是我客户端的代码
$('#upload-file').on('change', function (e) {
let uploadname = e.target.files[0].name;
console.log("ICS NAME "+ e.target.files[0].name);
let icsFlag = false;
let formData = new FormData();
formData.append('uploadFile', e.target.files[0].name);
console.log("FORM:" + formData.uploadname);
let fileName = e.target.files[0].name;
if (checkICS(e.target.files[0].name) == true) {
$.ajax({
type: 'POST', //Request type
url: '/upload', //The server endpoint we are connecting to
data: formData,
processData: false,
contentType: false,
success: function (data) {
(代码不会进入成功或失败部分,我只是得到 400 错误的发布错误)
这是我的服务器端代码(根据我的理解,这对类的每个人都是一样的)
//Respond to POST requests that upload files to uploads/ directory
app.post('/upload', function(req, res) {
console.log("PLEASE"+req.files);
if(!req.files) {
return res.status(400).send('No files were uploaded.');
}
let uploadFile = req.files.uploadFile;
// Use the mv() method to place the file somewhere on your server
uploadFile.mv('uploads/' + uploadFile.name, function(err) {
if(err) {
return res.status(500).send(err);
}
res.redirect('/');
});
});
这是调试面板网络部分中我的/upload 端点的图片(有人告诉我这可能有帮助,与内容类型有关?)debug-upload-endpoint
最佳答案
您没有将实际文件附加到 FormData
,只是它的名称。然后你的服务器端 uploader 没有文件对象可以使用
改变
formData.append('uploadFile', e.target.files[0].name);
到
formData.append('uploadFile', e.target.files[0]);
关于javascript - 我在滥用我的 POST 请求吗?我一直收到 400/500(错误的请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55540659/