【问题标题】:plupload / flash / Amazon S3 / unique_namesplupload / flash / Amazon S3 / unique_names
【发布时间】:2014-06-04 03:28:11
【问题描述】:

我正在使用 flash 实现 plupload 以将文件上传到 Amazon S3。除了一个小问题外,我将文件上传到 S3 工作正常。问题是设置“unique_names”不起作用。我总是以原始文件名在 S3 中得到文件。经过一些调试后,我确实看到创建了唯一文件名并将其传递给 Flash SWF 进行上传,但从未使用过。任何帮助将不胜感激。

【问题讨论】:

  • 除了 'com\plupload\File.as:82: characters 15-21 : * @param id 文件的唯一标识符之外,在 plupload 源中甚至没有找到单词 'unique'。'

标签: flash amazon-s3 plupload


【解决方案1】:

这可能会有所帮助: 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';使用您的自定义函数进行重命名。

【讨论】:

  • 是的,这就是我最终要做的。
【解决方案2】:

我在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;
        }

},

【讨论】:

    【解决方案3】:

    您可以在上传文件之前检查文件是否唯一。这是我的代码。

    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);
              }
            }
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2011-06-06
      • 1970-01-01
      • 2012-10-19
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 2011-09-18
      相关资源
      最近更新 更多