我有一个页面,我想接受一个文件和3-4个用户的输入,我能够使用connect-multiparty middle-ware实现这一点,但上传文件的名称是一些胡言乱语与正确的扩展名和上传的文件内容太正确。
我想实现以下的目标
我在网上搜索,但找不到任何有用的例子。我的完整代码如下
var express = require('express');
var router = express.Router();
var fs = require('fs');
var multiparty = require('connect-multiparty');
var multipartyMiddleware = multiparty({
uploadDir : '../public/uploads'
});
router.post('/api/user/uploads', multipartyMiddleware, function(req, res) {
var file = req.files.file;
console.log(file.name);
console.log(file.type);
console.log(file);
console.log(req.body.test);
console.log("The file was saved!");
res.json({
success : 1
});
return;
});
module.exports = router;发布于 2018-05-03 17:03:15
在使用fs.rename()复制文件后,您必须重命名该文件,或者修改node_modules中多方的源代码。在他们的代码中,他们有一个函数来重命名:
function uploadPath(baseDir, filename) {
var ext = path.extname(filename).replace(FILE_EXT_RE, '$1');
var name = randoString(18) + ext;
return path.join(baseDir, name);
}我对他们的代码做了一些修改,这样我就可以像multer那样使用它了:
https://gist.github.com/Edudjr/999c80df952458cc583272a5161b4d08
你会像这样使用它:
var EXT_RE = /(\.[_\-a-zA-Z0-9]{0,16}).*/g;
var options = {
uploadDir : path.join(__dirname,'../public/images'),
filename: function(filename, callback){
var name = filename.replace(EXT_RE, "");
callback(name+'-YEAH.png');
}
}
var form = new multiparty.Form(options);他们强烈建议您保存临时文件夹中的文件,以防止服务器上的DoS。
发布于 2019-12-23 11:44:52
您可以很容易地访问它,我用它来获取文件名。
console.log(req.files.uploads.path.split('\\')[1]);我使用的是从角度上传。
https://stackoverflow.com/questions/41464011
复制相似问题