问题描述:无法为express multer获取html格式的文件的完整路径名。
答案:在使用express multer处理文件上传时,无法直接获取html格式文件的完整路径名。这是因为在浏览器端上传文件时,只会将文件的内容传输到服务器,而不会传输文件的完整路径名。
解决方案:
req.file.originalname
来获取上传文件的原始名称。path.join(__dirname, 'uploads', req.file.filename)
来生成保存路径,其中__dirname
表示当前脚本所在的目录,'uploads'是保存文件的目录名,req.file.filename
是multer生成的文件名。示例代码:
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
// 配置multer中间件
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads'); // 指定文件保存的目录
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now()); // 指定保存的文件名
}
});
const upload = multer({ storage: storage });
// 处理文件上传的路由
app.post('/upload', upload.single('file'), function (req, res, next) {
// 生成文件的保存路径
const filePath = path.join(__dirname, 'uploads', req.file.filename);
// 返回文件的完整路径名
res.send(filePath);
});
app.listen(3000, function () {
console.log('Server is running on port 3000');
});
在上述示例代码中,我们使用了multer中间件来处理文件上传,并指定了文件保存的目录和文件名。在处理文件上传的路由中,我们生成了文件的保存路径,并将其返回给客户端。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
请注意,以上答案仅供参考,具体的实现方式和推荐产品可能因实际需求和环境而异。
领取专属 10元无门槛券
手把手带您无忧上云