我通过互联网搜索但我找不到解决方案。 我使用Nodejs Formidable处理上传的文件并将其保存到我的API中。
一切正常,但我想知道如何使用唯一的文件名更改文件名(例如:Timestamp)(同时保留原始文件扩展名)。
以下是我使用的代码:
form.on('end', function (fields, files) {
var temp_path = this.openedFiles[0].path;
var file_name = this.openedFiles[0].name;
var new_location = GLOBAL.config.uploadDir;
fs.move(temp_path, new_location + file_name, {clobber:true}, function (err) {
if (err) {
console.error(err);
fs.unlink(temp_path, function (err) {
if (err) {
console.error(err);
console.log("TROUBLE deletion temp !");
} else {
console.log("success deletion temp !");
}
});
} else {
res.json('created');
}
});
});
任何机构都可以建议解决这个问题吗?拜托?
答案 0 :(得分:0)
a.txt
之类的文件
2.服务器将其存储到/your_path/a_1434449842377.txt
https://www.npmjs.com/package/rename
rename('a.js', function() {
return {suffix: '-'+Date.now()};
});
// => a-timestamp_of_now.js
答案 1 :(得分:0)
根据文档,您可以更改强大的文件名将用于保存上传的文件名。
请参见here,特别是(强调我的):
file.path = null
此文件正在写入的路径。 您可以在
'fileBegin'
事件中对此进行修改,以防您对forid为您的文件生成临时路径的方式感到不满。
所以试试这个(未经测试):
form.on('fileBegin', function(name, file) {
file.path = '/your/prefered/path/name.ext';
});
答案 2 :(得分:0)
我找到了解决方案:-)
首先需要路径:var path = require('path');
然后我就这样做了:
var extension = path.extname(this.openedFiles[0].name);
var file_name = new Date().getTime() + extension;
// fs.move from fs-extra move the temp file to destination and unlink it
fs.move(temp_path, new_location + file_name, {clobber:true}, function (err) {
// Do something
});
答案 3 :(得分:0)
我做了一些小技巧,我认为这是最简单的方法
let myFileName = 'image.png';
myFileName = myFileName.split('.').join('-' + Date.now() + '.');
然后您得到的结果是'image-1559753269107.png'