2009-11-05 5 views
6

Может ли кто-нибудь сказать мне, как использовать Uploadify для загрузки непосредственно в Amazon S3?Использование Загрузить в POST прямо на 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 отлично работает.

Любые советы?

ответ

3

С этого thread на 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] 
    ] 
} 
+15

Было бы лучше включать объяснение решения, даже просто быстрое резюме. – erikprice

+3

Мертвая ссылка :(Вы должны скопировать pasta решение в SO в будущем – Ralphleon

+0

@Codemonkey Я обновил ссылку/ответ, спасибо за это! – Ciaran

0

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

Аутентификация 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); 
1

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

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

Это использование swfupload, которое работает над добавлением плохого сообщения при его завершении.

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

+0

Вы когда-нибудь получали это, чтобы работать с Uploadify? Я могу заставить его работать с перерывами – Heath

 Смежные вопросы

  • Нет связанных вопросов^_^