plupload / flash / Amazon S3 / уникальные имена - PullRequest
3 голосов
/ 23 февраля 2011

Я работаю над реализацией plupload с использованием flash для загрузки файлов в Amazon S3.У меня загрузка файлов на S3 работает отлично, за исключением одной маленькой проблемы.Проблема в том, что настройка «уникальные имена» не работает.Я всегда получаю в S3 файл с оригинальным именем файла.После некоторой отладки я вижу, что уникальное имя файла создается и передается во Flash SWF для загрузки, но оно никогда не используется.Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

4 голосов
/ 11 сентября 2011

Это может помочь: 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'; с вашей пользовательской функцией переименования.

0 голосов
/ 03 июня 2014

вы можете проверить, является ли файл уникальным, прежде чем загружать файл.Вот мой код.

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; ?>'
                };
      },

Затем при загрузке вашего файла посмотрите файл.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);
          }
        }
0 голосов
/ 09 января 2013

Я нашел следующее решение на https://github.com/moxiecode/plupload/issues/254. Вот как я использовал код. Сначала он удаляет расширение, затем я создаю уникальный идентификатор и, наконец, я добавляю расширение. Я также добавил имя папки, используя переменную 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;
        }

},
...