views:

1018

answers:

3

Can anyone tell me how to use Uploadify to upload directly to Amazon S3?

My code is as follows:

    $('#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'
         }
      });

My (unencoded) policy string looks like this:

{ "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]
]
}

Using the above code actually allows me to select a file, which it then appears to upload (somewhere), but nothing shows up in my S3 bucket and no errors are returned to the JS console.

Using a regular HTML form to post a file to the S3 bucket works fine.

Any advice?

+2  A: 

Someone seems to have had some success with this over on the uploadify forum

Ciaran
A: 

this is the java code for saving image into s3cloud. add this code into your uploadscript file (like uploadify.php) you will have your own uploadify script file.

AWSCredentials credentials = new 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);
Yan Paing
A: 

If you are using Rails, a plugin has been created: http://github.com/contrast/uploadify-s3

Jonathan