que - Usar Uploadify para enviar directamente a Amazon S3
subir archivos a amazon s3 (3)
¿Alguien puede decirme cómo usar Uploadify para cargar directamente en Amazon S3?
Mi código es el siguiente:
$(''#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''
}
});
Mi cadena de política (no codificada) se ve así:
{
"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]
]
}
Usar el código anterior en realidad me permite seleccionar un archivo, que luego parece cargar (en algún lugar), pero no aparece nada en mi bucket S3 y no se devuelve ningún error a la consola JS.
Usar un formulario HTML regular para publicar un archivo en el depósito S3 funciona bien.
¿Algún consejo?
este es el código java para guardar imágenes en s3cloud. agregue este código en su archivo uploadscript (como uploadify.php) tendrá su propio archivo de script uploadify.
Credenciales de AWSCredentials = nuevas 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);
Pude conseguir una carga directa en Amazon S3 con la barra de progreso funcionando. Aquí tengo una demostración en funcionamiento.
Si alguien está interesado, apoyará cubos y carpetas dentro del cubo trabajando en producir un complemento de WordPress para esto.
Esto está usando swfupload, aunque está trabajando en uploadify ill post cuando está listo.
http://www.isimpledesign.co.uk/blog/amazon-s3-direct-multiple-file-upload-progress-bar
De este hilo, el foro de 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>
La base para la cadena de política es la siguiente:
{ "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]
]
}