关于代码中files.photo.path与files.photo.type的含义及获取方法问询
问题解答
1. files.photo.path 和 files.photo.type 分别指什么?
files.photo.path:用户上传的图片文件在服务器临时存储的文件路径。文件上传后会被临时保存在这个路径下,通过它可以读取到文件的二进制内容。files.photo.type:上传图片的MIME类型,比如image/jpeg、image/png,用来标识图片的具体格式。
2. 如何获取用户上传图片的type与path?
这种逻辑依赖文件上传中间件,以下是两种常见中间件的实现方式:
方式一:使用express-fileupload
- 安装并配置中间件:
const express = require('express'); const fileUpload = require('express-fileupload'); const app = express(); // 默认配置,上传的文件会存储在服务器临时目录 app.use(fileUpload());
- 在接口中获取文件信息:
app.post('/upload-product', (req, res) => { // 上传的图片挂载在req.files.photo上 const uploadedPhoto = req.files.photo; // 获取临时存储路径 const photoPath = uploadedPhoto.path; // 获取图片MIME类型 const photoType = uploadedPhoto.type; // 后续可读取文件并写入MongoDB,和你代码中的逻辑一致 });
方式二:使用multer
注意multer中对应的属性是path和mimetype:
- 安装并配置中间件:
const express = require('express'); const multer = require('multer'); const app = express(); // 配置临时存储目录 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './temp-uploads/') } }); const upload = multer({ storage: storage });
- 在接口中获取文件信息:
// 单文件上传,字段名为photo app.post('/upload-product', upload.single('photo'), (req, res) => { const uploadedPhoto = req.file; // 获取临时路径 const photoPath = uploadedPhoto.path; // 获取图片MIME类型 const photoType = uploadedPhoto.mimetype; });
补充说明
你代码中把图片二进制数据和MIME类型直接存在MongoDB的方式,适合小体积图片;如果是大图片,更建议将文件存储到云存储或服务器静态目录,仅在数据库中保存文件的访问URL和类型,这样能提升系统性能。
内容的提问来源于stack exchange,提问作者hacksrinja
相关产品推荐
相关产品推荐

