我正在使用 Flash 将文件上传到 Amazon S3 来实现 plupload。除了一个小问题外,我将文件上传到 S3 工作正常。问题是设置“unique_names”不起作用。我总是在 S3 中使用原始文件名结束文件。经过一些调试后,我确实看到创建了唯一的文件名并将其传递给 Flash SWF 进行上传,但从未使用过。任何帮助将不胜感激。
问问题
1692 次
3 回答
4
这可能会有所帮助: http ://www.plupload.com/punbb/viewtopic.php?pid=4321#p4321
您必须通过为 UploadFile 事件编写自定义代码来设置文件重命名功能。
这就是我所做的:
preinit : {
UploadFile: function(up, file) {
up.settings.multipart_params.key = 'adjsdlasjdasdas.jpg';
}
},
替换'adjsdlasjdasdas.jpg';使用您的自定义函数进行重命名。
于 2011-09-11T14:25:41.360 回答
0
我在https://github.com/moxiecode/plupload/issues/254找到了以下解决方案。这就是我使用代码的方式。首先它删除了扩展,然后我创建了一个唯一的 ID,最后我添加了扩展。我还使用 php 变量添加了文件夹名称,这不是必需的,但我认为它会让您的存储桶更有条理。
preinit : {
BeforeUpload : function(up,file){
// Get the file extension
var file_name = file.name;
var extension = file_name.split(".").pop();
// Create a random ID
var new_id = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var d = new Date();
var n = d.getTime();
for( var i=0; i < 10; i++ )
new_id += possible.charAt(Math.floor(Math.random() * possible.length));
// Change the name NOTE I use a php variable to create a folder on S3
up.settings.multipart_params.key = "<?php echo $foldername ?>/"+n+new_id+"."+extension;
up.settings.multipart_params.Filename = "<?php echo $foldername ?>/"+n+new_id+"."+extension;
}
},
于 2013-01-09T07:18:20.107 回答
0
您可以在上传文件之前检查文件是否唯一。这是我的代码。
UploadFile: function(up, file) {
pluploadlog('[UploadFile]', file);
// You can override settings before the file is uploaded
var filename = file.name;
file.newname = '01'+ filename ;///add your own function here to create something unique.
up.settings.multipart_params = {
'key': mybucketsubdirectory + filename,
'Filename': filename,
'acl': 'public-read',
'Content-Type': 'image/jpeg',
'AWSAccessKeyId' : '<?php echo $accessKeyId; ?>',
'policy': '<?php echo $policy; ?>',
'signature': '<?php echo $signature; ?>'
};
},
然后在您的文件上传中查看您之前添加的 file.newname。
FileUploaded: function(up, file, info) {
if (file.status == 5){
console.log(file.newname); // If you need to get back the new unique name
uploadSuccess(file, info);
}else{
showItemError(file);
}
}
于 2014-06-03T19:28:11.677 回答