使用 react/express/multer 在 forlder 中上传文件



我正在尝试使用express和multer上传大文件。

回调请求发送 200,但我不知道如何将我的文件上传到特定文件夹中。我尝试了两种方式都没有成功。

第一个:

app.post('/upload', (req, res, next) => {
  let myFile = req.files;
  let i = 0;
for (i; i < myFile.length; i++) {
    let filemName = MyFile[i].name
    myFile[i].mv(`${__dirname}/uploads/${fileName}`, function(err) {
      if (err) {
        return res.status(500).send(err);
      }
      res.json({file: `uploads/${fileName}`});
    });
  }
})

此代码返回 500。

第二种方法(仅尝试使用一个文件(:

app.post ('/uploader', (req, res, next) => {
  var file =  req.files.file;
  // file.mv(`${__dirname}/uploads/${file.name}`), function(err) {
  //   if (err) {
  //     return res.status(500).send(err);
  //   }
  // }
  console.log('file');
  console.log(file[0]);
  fs.rename(req.file[0], '~/dev/file-upload/backend/uploads' +  file[0].name, function (err) {
    if (err) throw err;
    console.log('Move complete');
  })

此代码不会返回任何错误,但不会将文件放入文件夹中。最后我的客户端代码:

     handleUploadFile(event) {
    event.preventDefault();
    const data = new FormData();
    let c = this.uploadInput.files.length;
    console.log("c = ", c);
    console.log("mydata :", this.uploadInput.files);
    for (var i = 0; i < c; i++){
      data.append('filename', this.uploadInput.files[i].name);
      data.append('file', this.uploadInput.files[i]);
    }
  var options = {
    method: 'post',
    body: data,
  }
    fetch(apiBaseUrl + '/uploader', options).then((response) => {
      console.log('res', response);
    }).catch(function (err) {
      console.error("!!! error :",  err);
    })
  }
  render() {
    return (
      <form onSubmit={this.handleUploadFile}>
        <div>
          <input ref={(ref) => { this.uploadInput = ref; }} type="file"  multiple="multiple" />
        </div>
        <br />
        <div>
          <button>Upload</button>
        </div>    
      </form>
    );
  }

提前感谢您的帮助:)

我解决了我的问题。

正文解析

器不支持解析多部分/表单数据请求的正文。

以下链接为我提供了所需的所有答案。

最新更新