Загрузите файл (изображение) на сервер Nodejs, используя mon goose, с его оригинальным именем - PullRequest
0 голосов
/ 01 апреля 2020

Я загружаю файл изображения, используя nodeJS и express, и в настоящее время изображение сохраняется со случайным именем файла без указания c типа файла. Я хочу сохранить имя файла с расширением, чтобы его можно было также отобразить, потому что в настоящее время имя файла в БД сохраняется как исходный файл, но в папке загрузки оно присваивает случайное имя (строку), и когда я получаю это Назад Я понятия не имею, как отобразить его, так как он не имеет никакого типа / расширения файла, т.е. .png / JPEG.

//Schema

const AddProductSchema = new Schema({

  productCode: String,
  productTitle: String,
  productImage: String

//defined express, mongoose, multer and upload const for the directory
const upload = multer({
  dest: __dirname + '/uploads/images'
});

//post method
app.post("/addProductToDB", upload.single("productImage"), function(req, res) {

// to get the detail filled on add product form
  const addproduct = new AddProduct({
    productCode: req.body.productCode,
    productTitle: req.body.productTitle,
    productImage: req.file.originalname

  });

  addproduct.save();
  res.redirect("/products");

});

1 Ответ

0 голосов
/ 01 апреля 2020

Вы должны сохранить productImage с типом буфера, если вы хотите отобразить изображение productImage: Buffer
Существует пакет с названием sharp, который может помочь вам настроить файл изображения перед сохранением в базу данных, который называется Sharp https://www.npmjs.com/package/sharp
Если вы хотите иметь тип файла png перед сохранением, вы можете использовать следующий код

  const buffer = await sharp(req.file.buffer)
      .png()
      .toBuffer();

Тогда вам просто нужно сохранить буфер в productImage: buffer

...