Как загрузить и отобразить файл в Node.js? - PullRequest
0 голосов
/ 15 февраля 2019

Я новичок в Node и у меня проблемы с загрузкой файлов.Я пытаюсь загрузить изображения (jpg и png) и текстовые файлы в text / plain, а затем отобразить их на пост-маршруте ('/ upload)'.Я попробовал и multer и грозный, но не могу понять это правильно.Был бы очень признателен за помощь.

Я перепробовал все виды событий и обратных вызовов, но я пропускаю некоторые важные шаги.Вот HTML:

<!DOCTYPE html>
  <html lang="en">
  <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial- 
     scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Testform</title>
 </head>
 <body>
   <form method="post" enctype="multipart/form-data" 
    action="/upload">
     <div>
       <input type="file" name="file" size="35">
     </div>
     <button type="submit" value="Click me" name="submit-btn">Click me</button>
   </form>
   </body>
</html>   

А вот код сервера:

const formidable = require('formidable')
const express = require('express')
const path = require('path') 

const app = express()

app.get('/', (req, res) => {
   res.sendFile(path.resolve('views', 'index.html'))
})

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

  const form = new formidable.IncomingForm()

  form.uploadDir = __dirname + '/uploads/'

  form.parse(req)

  form.on('fileBegin', (name, file) => {
    file.path = form.uploadDir + file.name
    res.write(`<img src="./uploads/${file.name}">`)
    res.end()
  })
 })

 app.listen(3000)

Моя корневая папка содержит app.js, views / index.html и каталог с именем uploads.

Код - мой тестовый пример для загрузки изображений.Когда я запускаю программу, файл с правильным именем и содержимым загружается в каталог «./uploads».Тем не менее, я не вижу загруженное изображение в ответе на запрос поста ('/ upload').Было бы здорово, если бы кто-нибудь мог помочь мне с этим, а также для других текстовых файлов (text / plain).Ура!

1 Ответ

0 голосов
/ 15 февраля 2019

В ответ на запрос вы можете отправлять значения, поэтому работает что-то вроде res.end (значение здесь)!

...