sails:如何在上传文件时避免使用相同的名称

时间:2015-08-22 06:26:34

标签: jquery ajax node.js sails.js waterline

我正在sails.js.上传文件。我刚刚将文件上传到我的本地路径。 但问题是当我再次上传同一个文件意味着它将覆盖现有文件。

var uploadFile= req.file('SourceFileImport');

         uploadFile.upload
         ({
                // don't allow the total upload size to exceed ~10MB
                maxBytes: 10000000,saveAs: function(uploadFile, cb) {cb(null, uploadFile.filename); },dirname: '../../assets/uploads'
            },function whenDone(err, uploadedFiles) {
            if (err) 
            {
                console.log("error");
                return res.negotiate(err);
            }
            // If no files were uploaded, respond with an error.
            if (uploadedFiles.length === 0)
            {
                return res.badRequest('No file was uploaded');
            }
            else 
            {
                    console.log(uploadedFiles[0].fd);
            } 

我需要在上传同名文件时动态更改文件名。

1 个答案:

答案 0 :(得分:2)

看起来您提供的名称是将文件保存为uploadFile.filename,这将是在上传之前命名文件的任何内容。你只需要让这个名字变得与众不同。最简单的方法是包含当前时间戳。因此,将uploadFile.filename更改为Date.now() + uploadFile.filename

maxBytes: 10000000,
saveAs: function(uploadFile, cb) {
    cb(null, Date.now() + uploadFile.filename); 
},
dirname: '../../assets/uploads'

这会将当前时间戳添加到文件名,这将确保每个名称都是唯一的,文件不会相互覆盖。