作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个页面,我想接受一个文件和 3-4 个用户输入,我能够使用 connect-multiparty middle-ware
实现这一点,但是上传文件的名称是一些东西带有正确扩展名的乱码和上传的文件内容太正确了。
我想实现以下目标
- Set name of file being uploaded
- Create copy of file with different name if the file with same name exists in target directory
- Set max limit on size and restrict type of file.
我在网上搜索但找不到任何可用的示例。我的完整代码如下
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;
最佳答案
您必须在使用fs.rename()
复制后重命名该文件,或者修改node_modules 中multiparty 的源代码。在他们的代码中,他们有一个进行重命名的函数:
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 攻击。
关于javascript - 如何设置连接多方上传文件的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464011/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!