首页 > 解决方案 > 如何在node js中使用fs.readFile()和fs.writeFile()在项目中存储图片,然后在MongoDB中

问题描述

我正在开发一个 MERN 应用程序的后端,在该应用程序中,我必须使用邮递员上传 jpg/jpeg... 文件,这些文件首先存储在我的项目的目录“文件”中,然后存储在 MongoDB 中的文件集合中,ID 为名称([id].jpg) 。我必须使用 fs.readFile() 和 fs.writeFile() 来做到这一点,但我获得的最大结果是“未定义”。这些文件临时存储在我电脑上的一个文件夹中,我不知道如何更改它。此外,我必须获得文件的扩展名,他们建议我使用 const array = file.name.split(“.”); const extension = array[array.length - 1].toLowerCase();

这是我的模型:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const FileSchema = new Schema({
fileName: {
    type: String,
    required: true,
},
fileType: {
    type: String,
    required: true,
},
extension: {
    type: String,
    required: true,
},
size: {
    type: String,
    required: true,
},
});

module.exports = File = mongoose.model('file', FileSchema);

这是我的上传文件:

const File = require("../../models/File");
const express = require("express");
const formidableMiddleware = require("express-formidable");
const app = express();
app.use(formidableMiddleware());
const fs = require("fs");

module.exports = async (req, res) => {

  const test = ({ file } = req.files);
  console.log("the files store temporarly here", test["file"]["path"]);

  try {
    fs.readFile("C:\Users\grazi\AppData\Local\Temp", 'utf-8', (err, data) => {
      console.log(data);
    });
  } catch (e) {
    console.log(e);
  }

  try {
    fs.writeFile("C:\Users\grazi\wa\Service-stats2\backend\files", 'C:\Users\grazi\wa\Service-stats2\backend\models\File.js', (err, data) => {
      console.log(data);
    });
  } catch (e) {
    console.log(e);
  }
};

如果我向 POSTMAN 发送请求,这是我的终端的输出:

the files store temporarly here:
C:\Users\grazi\AppData\Local\Temp\upload_753ecef1d508a15025b20a29e07e65a3
undefined
undefined

标签: javascriptnode.jsmongodbnode-modulesmern

解决方案


推荐阅读