Как загрузить изображения с помощью NodeJs? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу загрузить изображения товара, используя Node Js.Поэтому я использовал multer для загрузки изображений.Я использовал почтальон, чтобы проверить, работает ли он, но он возвращает Please upload a file.Я изменил другое изображение, тогда оно говорит PayloadTooLargeError: request entity too large.

Unable to detect image

ayloadTooLarge

MyCode

const express = require("express");
const router = express.Router();

const multer = require('multer');
const storage = multer.diskStorage(
{
    destination: function(req, file, cb)
    {
        cb(null, './uploads/');
    },
    filename: function(req, file, cb)
    {
        cb(null, new Date().toISOString() + file.originalname);
    }
});

const fileFilter = (req, file, cb) =>
{
    // reject a file
    if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png')
    {
        cb(null, true);
    }
    else
    {
        cb(null, false);
    }
};

const upload = multer(
{
    storage: storage,
    limits:
    {
        fileSize: 1024 * 1024 * 50
    },
    fileFilter: fileFilter
});


router.post("/upload", upload.single('productImage'), (req, res, next) =>
{
    if (!req.file)
      return res.send('Please upload a file')
    var tempPath = req.file.path
      console.log(tempPath);
});

package.json

{
  "name": "api",
  "version": "1.0.0",
  "description": "testing version",
  "main": "server.js",
  "dependencies": {
    "express": "^4.16.4",
    "multer": "^1.3.0",
    "nodemon": "^1.18.10",
  },
  "devDependencies": {},
  "scripts": {
    "test": "node server.js",
    "start": "nodemon server.js"
  },
  "keywords": [
    "api"
  ],
  "author": "tteam",
  "license": "ISC"
}

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Ваш код работает нормально, мне просто нужно изменить upload.single('productImage') на upload.single('image'), и я не столкнулся с такой ошибкой, как Please upload a file, вот моя ручка, она точно такая же, как ваша, и работает отлично.

https://codepen.io/khanChacha/pen/rbJjYj

Please upload a file происходит только в том случае, если вы не выбрали какой-либо файл или неверный тип файла

Я обновил ваш код и внес несколько изменений, теперь он работает, проверьте его здесь:

https://github.com/faiz1996khan/uploads

0 голосов
/ 19 апреля 2019

Ошибка: ENOENT: такого файла или каталога нет, откройте 'C: \ Users \ ttest \ Downloads \ Compressed \ uploads-master \ api \ rout \ uploads \ 2019-04-18T14: 02: 45.456Z55460132_25_63992_n (1) .jpg '

Я думаю, что проблема, кажется, связана с местом, где вы храните загруженный файл.Перед сохранением файла необходимо проверить наличие upload/.

user.js

const path = require('path');
const fs = require('fs-extra');

let UPLOAD_LOCATION = path.join(__dirname, 'uploads');
fs.mkdirsSync(UPLOAD_LOCATION); //create `uploads/` folder, if it doesn't exists

Используйте это расположение для хранения загружаемого файла

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, UPLOAD_LOCATION);
  },
  filename: function (req, file, cb) {
    cb(null, new Date().toISOString() + file.originalname);
  }
});

Для справки, вы можете проверить как настроить путь загрузки в мультере

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