Multer Upload single 在 reactjs 中不起作用

Multer Upload single not working in reactjs

我尝试了多种在线资源将文件上传到本地计算机上的目标位置。此控制台显示文件已上传,但在目标文件夹中未看到该文件。这是我的 server.js 代码:

const app = express()
app.use(bodyParser())
app.set('view engine', 'hbs')
app.use(express.static(__dirname + '/public'))
app.set('views', __dirname + '/views')
app.use(logger('dev'))
app.use(express.json())
app.use(express.urlencoded({ extended: false }))

app.get('/', (req, res) => {
  res.render('index.hbs')
})

app.listen(port, () => {
  console.log(`App is live on port ${port}`)
})

app.post('/upload', upload.single('myFile'), (req, res, next) => {

  console.log('called')
  console.log(req.body.myFile)

  if (req.body.myFile) {
    console.log('Uploading file...')
    var filename = req.body.myFile

    var uploadStatus = 'File Uploaded Successfully'
  } else {
    console.log('No File Uploaded')
    console.log('======================== SESSION END ========================')
    var filename = 'FILE NOT UPLOADED'
    var uploadStatus = 'File Upload Failed'
  }

  /* ===== Add the function to save filename to database ===== */

  res.render('index.hbs', { status: uploadStatus, filename: `Name Of File: ${filename}` })
})

这是我的 index.hbs 文件:

<form action="/upload"  method="POST">
    <input type="file" name="myFile"  required />
    <input type="submit" value="Upload"  />
</form>

有人可以帮我解决这个问题吗?

这里的问题出在你的hbs上。 表单缺少属性:enctype="multipart/form-data"

PS: req.body 应该包含额外的数据(例如文本字段),要输出你的文件你应该检查 req.file

文档里都有:https://github.com/expressjs/multer#readme