4

Pluploadを使用してS3にアップロードしています。私の問題は、ファイルの名前を変更したいので、それらがS3にある場合、それらは私が望む形式に変更されるということです。関数によってアップロードされたファイルのファイル名を取得することができました:

 FilesAdded: function (up, files) {
                    for (var i in files) {
                        files[i].name = files[i].name.split('_').join(' ').trim();
                        alert('Selected files: ' + files[i].name);

                    }

コントロールでファイル名が変更されましたが、S3を確認するとファイルは変更されていません。

unique_namesプロパティがfalseであることを確認し、プロパティの名前をtrueに変更しました。しかし、何の助けもありませんでしたか?

4

4 に答える 4

3

同じ問題に直面しました。つまり、S3にpluploaderを使用していて、アップロードする前にファイル名を正規化したかったのです。残念ながら、「ファイル」パラメータは読み取り専用のようであり、ファイル名の変更は送信されたフォームに表示されません。

ただし、「key」パラメータを正確な文字列(正規化された名前)に変更すると、S3はそれを別の名前で保存します。正規化された名前を作成し、それを「FileAdded」コールバックのmultipart_paramの「key」パラメータで使用できます。

....
FilesAdded: function(up, files) {
  console.log("Uploader.FilesAdded ", up, files);

  var file = files[0];

  //Replace unwanted characters with "_"
  var new_name = file.name.replace(/[^a-z0-9\.]+/gi,"_").toLowerCase();

  console.log("Changing file name to ", file.name);

  //Create multipart_params here (or just set the 'key' and 'Filename')
  var multipart_params =  {
    'key': config.key + new_name, // *instead of ${filename}
    'Filename':  config.key + new_name,
    'acl': config.acl,
    'Content-Type': '',
    'AWSAccessKeyId' : config.accessId,
    'policy': config.policy,
    'signature': config.signature
  };

 //
 up.settings.multipart_params = multipart_params;
}
....
于 2014-02-23T00:06:08.563 に答える
2

S3へのマルチパートアップロードを実行する直前に、アップロードキュー内のすべてのファイルにユーザー定義可能なプレフィックスを追加する必要がありました。私の場合、プレフィックスはアップロードを開始する前であればいつでも編集できたため、FilesAddedイベントの使用は受け入れられませんでした。

私のために働いた解決策は、アップロードを開始する直前にキュー内の各ファイルに対して起動するBeforeUploadを使用することでした。

 BeforeUpload: function(up, file) {

     //Change the filename          
     file.name = appendUniqueId(file.name);
     file.name = addPrefix(file.name);

     var params = up.settings.multipart_params;
     params.key = file.name;
     params.Filename = file.name;

 }
于 2017-11-10T19:54:55.137 に答える
1

unique_names:trueとrename:trueを試してください。わたしにはできる。

于 2012-12-18T12:14:49.537 に答える
0

この問題に対して私が見つけた唯一の完全に機能する解決策はmultipart_params、Pluploadアップローダーのプロパティを利用することです。

私が使用しているコードは次のとおりです。

uploader.bind('BeforeUpload', function (up, file) {
    uploader.settings.multipart_params = { 'renamedFileName': 'yourRenamedFileName' };
});

次に、画像を処理しているときに、投稿された情報からこれをリクエストできます。

c#コード

var renamedFileName = context.Request["renamedFileName"].ToString();

あなたのコードのためにあなたは試すことができます;

uploader.bind('BeforeUpload', function (up, file) {
    uploader.settings.multipart_params = { 'renamedFileName': file.name.split('_').join(' ').trim(); };
});

次に、この追加情報を使用して、サーバー上のファイルの名前を変更できます。

于 2013-01-17T11:21:20.270 に答える