gpt4 book ai didi

javascript - 如何设置连接多方上传文件的名称?

转载 作者:数据小太阳 更新时间:2023-10-29 05:37:43 24 4
gpt4 key购买 nike

我有一个页面,我想接受一个文件和 3-4 个用户输入,我能够使用 connect-multiparty middle-ware 实现这一点,但是上传文件的名称是一些东西带有正确扩展名的乱码和上传的文件内容太正确了。

我想实现以下目标

  1. Set name of file being uploaded
  2. Create copy of file with different name if the file with same name exists in target directory
  3. 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 攻击。

https://github.com/pillarjs/multiparty/issues/64

关于javascript - 如何设置连接多方上传文件的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com