Sails.JS使用skipper上传文件,访问原始文件名和动态上传路径

Man*_*ngh 7 file-upload sails.js skipper

我想使用skipper上传一个简单的文件.早些时候,可以使用req.files访问通过表单上传的文件,但是在Sails 0.10.x中,默认情况下安装了skipper,req.files是未定义的.而不是使用req.file('filename')来访问该文件.

我可以通过简单的文件上传来查看文档.但是,我希望能够在上传之前访问文件名,并且还需要

  • 根据上传的用户将文件上传到动态创建的目录
  • 新创建的文件的名称应为oldFileName + _ +整数时间戳

我如何使用skipper模块执行此操作,或者更有效的方法是什么?

编辑
到目前为止,我已经能够做到这一点,但我希望必须有一个更好的方法.

为了访问文件名,我使用了这个表达式

var inputFileName = req.file('inputFile')._files[0]["stream"]["filename"];
Run Code Online (Sandbox Code Playgroud)

我可以看到,如果目录不存在,则会根据上传参数中给出的文件路径和名称自动创建目录

mdu*_*sch 10

这是Skipper目前的一个问题 - 有2个请求(https://github.com/balderdashy/skipper/issues/12) - 但我不知道何时合并并可用.

要解决您的问题:

1.覆盖文件名

// save original file name
var origifile = req.file('testfile')._files[0].stream.filename;
var filename = origifile;

// check if file is existing and change filename if necessary
while(fs.existsSync(".tmp/uploads/" +filename)){
   // Add 4 random chars at he beginning of the filename
   filename = randString(3)+"_"+origifile; 
};

req.file('testfile').upload(filename,function (err, files) {
Run Code Online (Sandbox Code Playgroud)

注意:您必须编写一个randString() - 函数

2.将上传的文件移动到您的文件夹中

在upload-callback中:

fs.rename("/tmp/uploads/"+files[0].filename, "your_folder/" +files[0].filename, function(err){
.... });
Run Code Online (Sandbox Code Playgroud)