我是否滥用我的POST请求?我不断收到400/500(错误的请求)

时间:2019-04-05 17:32:09

标签: javascript node.js

在大学的一门课程中,我为最终项目一直在非常努力地工作。我很难理解为什么我的$ .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

1 个答案:

答案 0 :(得分:1)

您没有将实际文件附加到FormData,仅是名称。然后您的服务器端上载器没有文件对象可以使用

更改

formData.append('uploadFile', e.target.files[0].name);

收件人

formData.append('uploadFile', e.target.files[0]);