javascript - 如何在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
解决方案
推荐阅读
- javascript - 将用户输入传递给服务器以进行 C++ 编译
- c++ - QML 对象不更新显示
- android - MediaCrypto 使用 HLS/DASH AES h.264 Android 加密视频文件
- react-native - 在不更新状态的情况下重新渲染 React useState
- javascript - D3.js v3 点图直方图重复值
- r - 将整数数字转换为百分比
- python - 实现文件的 Conda + Pytest ModuleNotFoundError
- swift - Swift中的循环延迟问题,有什么区别?
- php - 为什么将一个方法作为参数传递给另一个方法时会得到“函数名必须是字符串”
- r - rgee中的桶是什么?