我遇到了同样的问题,即对 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;
}
....