Multer Upload не работает в реактиве - PullRequest
1 голос
/ 05 марта 2019

Я пробовал несколько онлайн-ресурсов, чтобы загрузить файл в место назначения на локальном компьютере. Эта консоль показывает, что файл был загружен, но файл не отображается в папке назначения. Это мой код 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>

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 05 марта 2019

Проблема здесь в ваших hbs. Форма пропускает атрибут: enctype="multipart/form-data"

PS: req.body должен содержать дополнительные данные (например, текстовые поля), чтобы вывести ваш файл, вы должны отметить req.file.

Это все в документе: https://github.com/expressjs/multer#readme

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...