Загрузка файла Multer не работает multipart / form-data image - PullRequest
0 голосов
/ 05 января 2019

Я использую nuxt.js. Я использовал пакет vue-picture-input и использую этот учебник для загрузки файла изображения. Чтобы загрузить его на сервер, используя axios на моем API:

export default function (url, file, name = 'avatar') {
  if (typeof url !== 'string') {
    throw new TypeError(`Expected a string, got ${typeof url}`);
  }

  // You can add checks to ensure the url is valid, if you wish

  let formData = new FormData();
  formData.append(name, file);
  const config = {
    headers: {
      'content-type': 'multipart/form-data'
    }
  };

  return axios.post(url, formData, config);
};

Я дважды проверил перед отправкой, у formData действительно есть изображение. Затем этот запрос отправляется на сервер и получает следующий код:

const storage = multer.diskStorage({
    destination: 'some-destination',
    filename: function (req, file, callback) {
        crypto.pseudoRandomBytes(16, function(err, raw) {
            if (err) return callback(err);

            callback(null, raw.toString('hex') + path.extname(file.originalname));
        });
    }
});

var upload = multer({ storage : storage})

router.post('/upload/add', upload.single('avatar'), (req, res) => {
    if (!req.file) {
        console.log("No file received");
        return res.send({
          success: false
        });

    } else {
        console.log('file received');
        return res.send({
          success: true
        })
    }

    // Everything went fine 
})

Я знаю, что делаю это странным образом - использую formData вместо фактической отправки html-формы ... но в моем сценарии это лучше. Всякий раз, когда я запускаю этот код, ответ всегда success: false. Означает ли это, что он не может найти изображение formData? Я был бы очень признателен, если бы вы помогли мне отладить это. Приветствия.

...