Малтер никоим образом не сохраняет изображения на диске - PullRequest
0 голосов
/ 24 июня 2018

Он просто ничего не сохраняет в указанную папку destination.

Я попробовал {storage:storage} вместо {dest: 'storage/'}, но это тоже не сработало. данные изображения фактически отправляются на сервер, когда его консоль регистрируется. указанный dest i создается по умолчанию, но остается пустым.

const express = require('express');
const app = express();
const multer = require('multer');
    let storage = multer.diskStorage({
        destination: '/public/my-uploads',
          filename: function (req, file, cb) {
            cb(null, file.fieldname + '-' + Date.now())
          }
    });

const upload = multer({dest:'storage/'}).single('file');


app.post('/upload', upload, (req , res) => {
  console.log(req.files) // this does log the uploaded image data.
})


***** EDIT ******

HTML

        <form  onSubmit={this.upload} enctype='multipart/form-data'>
          <input type='file' name='image' />
          <input type='submit' value='upload' />
        </form>

JS

  upload(e){
    e.preventDefault();
    const file = e.target[0].files[0];
    console.log(file)
    const fm = new FormData();

    fm.append('file', file);
    console.log(fm)
    axios.post('/upload', fm);
  }

POSTMAN

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Попробуй поймать ошибку, сам вызывая промежуточное ПО:

var upload = multer().single('avatar')
app.post('/upload', function (req, res) {
  upload(req, res, function (err) {
    if (err) {
      // An error occurred when uploading
      return
    }

    // Everything went fine
  })
})

Также измените хранилище на:

let storage = multer.diskStorage({
    destination: function(req, file, ca) {
        cb(null, '/public/my-uploads');
    }
    filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now())
    }
});
0 голосов
/ 24 июня 2018

Кажется, что вы не используете переменную хранения и используете функцию для клавиши назначения, как написано в документации, также вам нужно передать ваш файл в поле ввода с именем field, иначе multer не сможет сохранить файл,создать папку хранения на том же уровне, что и код:

const http = require('http')
const port = 3000
const express = require('express');
const app = express();
const multer = require('multer');
const server = http.createServer(app)

let storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './storage')
    },
    filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now())
    }
});

const upload = multer({ storage }).single('file');


app.post('/upload', upload, (req, res) => {
    console.log(req.files) // this does log the uploaded image data.
})

// bind the server on port
server.listen(port, (err) => {
    if (err) {
        return console.log('something bad happened', err)
    }
    console.log(`server is listening on ${port}`)
})

enter image description here

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