Использование Uploadify для POST напрямую в Amazon S3

Может ли кто-нибудь сказать мне, как использовать Uploadify для загрузки непосредственно в Amazon S3?

Мой код выглядит следующим образом:

$('#fileInput').uploadify({
  'fileDataName' : 'file',
  'uploader'  : 'uploadify.swf',
  'script'    : 'http://BUCKET-NAME-GOES-HERE.s3.amazonaws.com/',
  'cancelImg' : 'cancel.png',
  'method'    : 'post',
  'auto'      : true,
  'onError': function (a, b, c, d) {
    alert('error '+d.type+": "+d.info + ' name: ' + c.name + ' size: ' + c.size);
  },
  'scriptData' : {
    'AWSAccessKeyId': "KEY-GOES-HERE",
    'key': "${filename}",
    'acl': "public-read",
    'policy': "POLICY-STRING-GOES-HERE",
    'signature': "SIGNATURE-GOES-HERE",
    'success_action_status': '200'
  }
}); 

Моя (незакодированная) строка политики выглядит так:

{
  "expiration": "2100-12-01T12:00:00.000Z",
  "conditions": [
    {"acl": "public-read"},
    {"bucket": "BUCKET-NAME-GOES-HERE"},
    {"success_action_status" : 200},
    ["starts-with", "$filename", ""],
    ["starts-with", "$folder", ""],
    ["starts-with", "$key", ""],
    ["content-length-range", 1, 209715200]
  ]
}

Использование приведенного выше кода на самом деле позволяет мне выбрать файл, который затем появляется для загрузки (где-то), но в моем ведре S3 ничего не отображается, и на консоль JS не возвращается никаких ошибок.

Использование обычной HTML-формы для отправки файла в корзину S3 работает нормально.

Любой совет?


person Community    schedule 05.11.2009    source источник


Ответы (3)


Из этой ветки форума uploadify :

<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="jquery.uploadify.v2.1.0.js"></script>
<link rel="stylesheet" href="uploadify.css" type="text/css" media="screen" />
</head>

<body>
<form>
<input id="fileInput" name="fileInput" type="file" />
</form>
<script type="text/javascript">// <![CDATA[
   $(document).ready(function() {
      $('#fileInput').uploadify({
         'fileDataName' : 'file',
          'uploader'  : 'uploadify.swf',
          'script'    : 'http://UPLOADBUCKET/',
          'cancelImg' : 'cancel.png',
          'auto'      : true,
          'onError' : function(errorObj, q, f, err) { console.log(err); },

          'scriptData' : {
              AWSAccessKeyId: "ACCESS_KEY",
             key: "foo/${filename}",
             acl: "public-read",
             policy: "POLICY STRING"
             signature: "SIGNATURE,
                success_action_status: '200'
             }

          });
    });
// ]]></script>
</body>

</html>

Основа для строки политики следующая:

{ "expiration": "2100-12-01T12:00:00.000Z",
"conditions": [
  {"acl": "public-read" },
  {"bucket": "UPLOADBUCKET" },
  {"success_action_status" : '200'},
    ["starts-with", "$filename", "" ],
    ["starts-with", "$folder", "" ],
    ["starts-with", "$key", "foo"],
    ["content-length-range", 1, 209715200]
  ]
}
person Ciaran    schedule 02.12.2009
comment
Было бы лучше включить объяснение решения, хотя бы краткое изложение. - person erikprice; 01.12.2010
comment
Мертвая ссылка :( В будущем вы должны скопировать пасту решение в SO - person Ralphleon; 13.01.2012
comment
@sohaan это подпись S3 .. docs.amazonwebservices.com/AmazonS3/latest/ dev / - person Ciaran; 13.06.2012

Мне удалось получить прямую загрузку в Amazon S3 с работающим индикатором выполнения. Я получил здесь рабочую демонстрацию.

Если кому-то интересно, он будет поддерживать корзины и папки внутри корзины, работая над созданием плагина wordpress для этого.

Это использует swfupload, который работает над загрузкой больного поста, когда он будет готов.

http://www.isimpledesign.co.uk/blog/amazon-s3-direct-multiple-file-upload-progress-bar.

person iSimpleDesign    schedule 22.02.2011
comment
Вы когда-нибудь заставляли это работать с Uploadify? Я могу заставить его работать только с перерывами - person Heath; 19.01.2012

это java-код для сохранения изображения в s3cloud. добавьте этот код в свой файл сценария загрузки (например, uploadify.php), у вас будет собственный файл сценария загрузки.

Учетные данные AWSCredentials = новые AWSCredentials (_ACCESS_KEY, _SECRET_KEY);

    log.info("oovfilepath : " + oovfilepath);
    log.info("name : " + name);
    S3Service s3Service = new RestS3Service(credentials);
    S3Bucket s3Bucket = s3Service.createBucket(_BUCKET_NAME);
    AccessControlList bucketAcl = s3Service.getBucketAcl(s3Bucket);
    bucketAcl.grantPermission(GroupGrantee.ALL_USERS,
            Permission.PERMISSION_READ);

    InputStream input = new FileInputStream(oovfilepath);

    S3Object s3Object = new S3Object(s3Bucket, name);
    log.info("s3Object:" + s3Object);

    s3Object.setAcl(bucketAcl);
    s3Object.setDataInputStream(input);

    log.info("s3Object:" + s3Object);

    s3Service.putObject(s3Bucket, s3Object);
person Yan Paing    schedule 07.07.2010