【问题标题】:NodeJS-Reactjs File Upload Concurrent requests won't workNodeJS-Reactjs 文件上传并发请求将不起作用
【发布时间】:2022-08-03 02:50:06
【问题描述】:

我正在尝试构建一个项目,申请人可以在其中上传他们的简历和图像,这些图像和简历将保存在本地服务器上,我正在制作两个输入组件来选择一个带有单个上传按钮的文件,从而向当我请求上传两个文件时,nodejs服务器端将文件保存在所需的目的地,只有第一个将被保存,而另一个将被忽略

这部分的我的客户端代码

    import React from \'react\';
import axios from \'axios\';
import { useState, useEffect } from \"react\";
function FileUploads(props) {
    const [file, setFile] = useState();
    const [fileName, setFileName] = useState(\"\");
    const [image, setImage] = useState();
    const [imageName, setImageName] = useState(\"\");

    const saveFile = (e) => {
        setFile(e.target.files[0]);
        setFileName(e.target.files[0].name);
        console.log(e.target.files)
      };

      const saveImage = (e) => {
        setImage(e.target.files[0]);
        setImageName(e.target.files[0].name);
        console.log(e.target.files)
     
      };


      const uploadFile = async (e) => {
        console.log(file)
        console.log(fileName)
        console.log(image)
        console.log(imageName)
        const formData = new FormData();
        formData.append(\"file\", file);
        formData.append(\"fileName\", fileName);
        const imageData = new FormData();
        imageData.append(\"file\", image);
        imageData.append(\"fileName\", imageName);
        try {
          const img = await axios.post(
            \"http://localhost:5000/uploadImage\",imageData);
        } catch (ex) {
          console.log(ex);
        }

        try {
          const img = await axios.post(
            \"http://localhost:5000/uploadCV\",formData);
        } catch (ex) {
          console.log(ex);
        }

      };

      return (
            <body className=\"body\">
            
      <div className=\"containerMinimized\" >
      
          <div class=\"content\">
          <h2>Kindly Upload Your CV & Image</h2>

  <h4 className=\'input-cv-text\'>Upload your CV</h4>
    <input className=\'input-cv\' type=\"file\" onChange={saveFile}/>
     <h4 className=\'input-cv-text2\'>Upload your Image</h4>
    <input className=\'input-cv\' type=\"file\" onChange={saveImage}/> 
    <button className=\"checkButtonInput\" onClick={uploadFile}>Upload</button>

  
  </div>
  </div>
  </body>
      );

}

export default FileUploads;

这是我使用 NodeJS 的端点

app.post(\"/uploadCV\", (req, res) => {
  const newpath = __dirname + \"/applicantsResume/\";
  const file = req.files.file;
  const filename = file.name;
  console.log(\'\')
 
  file.mv(`${newpath}${filename}`, (err) => {
    if (err) {
      // res.status(500).send({ message: \"File upload failed\", code: 200 });
      console.log(err)
    }
    // res.status(200).send({ message: \"File Uploaded\", code: 200 });
    console.log(\'CV Uploaded Correctly\')
  });
});


app.post(\"/uploadImage\", (req, res) => {
  const newpath = __dirname + \"/applicantsImages/\";
  const file = req.files.file;
  const filename = file.name;
  console.log(\'\')
 
  file.mv(`${newpath}${filename}`, (err) => {
    if (err) {
      // res.status(500).send({ message: \"File upload failed\", code: 200 });
      console.log(err)
    }
    // res.status(200).send({ message: \"File Uploaded\", code: 200 });
    console.log(\'Image Uploaded Succesfully\')
  });
});

我有时会发现一种模式,当我重新启动服务器时,它会自动插入丢失的文件,就好像它是一个待处理的请求一样

有任何想法吗?

    标签: javascript node.js reactjs express axios


    【解决方案1】:

    我会看看 Chrome Dev Console 的网络选项卡,第二个请求发生了什么

    【讨论】:

      猜你喜欢
      • 2018-04-18
      • 1970-01-01
      • 2017-09-02
      • 2021-10-11
      • 1970-01-01
      • 2018-08-17
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多