nodejs 强大的更改文件名与时间戳
nodejs formidable change filename with timestamp
我在互联网上进行了搜索,但没有找到解决方案。
我使用 Nodejs Formidable 来处理上传的文件并将其保存到我的 API.
一切正常,但我想知道如何使用唯一的文件名(例如:时间戳)更改文件名(同时保持原始文件扩展名)。
这是我使用的代码:
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');
}
});
});
任何人都可以就此提出解决方案吗...拜托?
你的意思是:
1. 你上传一个文件比如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
根据文档,您可以更改 formidable 用来保存上传的文件名。
参见 here,特别是(强调我的):
file.path = null
The path this file is being written to. You can modify this in the 'fileBegin'
event in case you are unhappy with the way formidable generates a temporary path for your files.
所以试试这个(未经测试):
form.on('fileBegin', function(name, file) {
file.path = '/your/prefered/path/name.ext';
});
我找到了解决方案:-)
首先需要路径: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
});
我用了一个小技巧来做这个,我认为这是最简单的方法
let myFileName = 'image.png';
myFileName = myFileName.split('.').join('-' + Date.now() + '.');
然后你得到结果'image-1559753269107.png'
我在互联网上进行了搜索,但没有找到解决方案。 我使用 Nodejs Formidable 来处理上传的文件并将其保存到我的 API.
一切正常,但我想知道如何使用唯一的文件名(例如:时间戳)更改文件名(同时保持原始文件扩展名)。
这是我使用的代码:
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');
}
});
});
任何人都可以就此提出解决方案吗...拜托?
你的意思是:
1. 你上传一个文件比如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
根据文档,您可以更改 formidable 用来保存上传的文件名。
参见 here,特别是(强调我的):
file.path = null
The path this file is being written to. You can modify this in the
'fileBegin'
event in case you are unhappy with the way formidable generates a temporary path for your files.
所以试试这个(未经测试):
form.on('fileBegin', function(name, file) {
file.path = '/your/prefered/path/name.ext';
});
我找到了解决方案:-)
首先需要路径: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
});
我用了一个小技巧来做这个,我认为这是最简单的方法
let myFileName = 'image.png';
myFileName = myFileName.split('.').join('-' + Date.now() + '.');
然后你得到结果'image-1559753269107.png'