問題

私はスキッパーを使って簡単なファイルをアップロードしたい。以前は、フォーム経由でアップロードされたファイルにreq.filesを使用してアクセスできましたが、Sails 0.10.xでは、デフォルトでインストールされたスキッパーがreq.filesは未定義であることを知る必要がありました。

私はドキュメントを見て簡単なファイルのアップロードを行うことができます。しかし、私はそれをアップロードする前にファイル名にアクセスできるようにしたいし、

  • ユーザーに基づいて動的に作成されたディレクトリにファイルをアップロードする アップロードしたのは
  • 新しく作成されたファイルの名前は、整数

スキッパーモジュールを使用してこれを行うにはどうすればよいですか、むしろこれを行う最も効率的な方法は何ですか?

編集
または これまで私はこれを行うことができましたが、もっと良い方法がなければならないと思っています。

ファイル名にアクセスするために、私はこの式を使用しました

 var inputFileName = req.file('inputFile')._files[0]["stream"]["filename"];
 

関数をアップロードするためにパラメータに与えられたfilepathとnameに基づいて存在しない場合、スキッパーが自動的にディレクトリを作成することがわかりました

  ベストアンサー

これは現時点ではSkipperの問題です - これには2つのPull-Requests( 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) {
 

注意: randString() - 関数を書く必要があります

2.アップロードされたファイルをフォルダに移動する

upload-callbackで:

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

  同じタグがついた質問を見る

file-uploadsails.jsskipper