Frage

Kann mir jemand sagen, wie man benutzt Hochladen direkt auf Amazon S3 hochladen?

Mein Code ist wie folgt:

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

Meine (uneingeschränkte) Richtlinienzeichenfolge sieht folgendermaßen aus:

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

Mit dem obigen Code kann ich tatsächlich eine Datei auswählen, die dann (irgendwo) hochgeladen wird, aber in meinem S3 -Bucket wird nichts angezeigt, und es werden keine Fehler an die JS -Konsole zurückgegeben.

Verwenden eines regulären HTML -Formulars zum Posten einer Datei in den S3 -Bucket funktioniert einwandfrei.

Irgendein Rat?

War es hilfreich?

Lösung

Davon Faden Das Uploadify -Forum:

<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>

Die Basis für die Richtlinienzeichenfolge lautet wie folgt:

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

Andere Tipps

Ich habe es geschafft, einen direkten Upload zu Amazon S3 mit Progress Bar Working Ive zu erhalten. Ich habe hier eine funktionierende Demo bekommen.

Wenn jemand interessiert ist, unterstützt es Eimer und Ordner innerhalb von Eimer, die darauf arbeiten, ein WordPress -Plugin zu erzeugen.

Dies verwendet SWFUpload, und das Arbeiten für Uploadify -Ill -Posts, wenn es fertig ist.

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

Dies ist der Java -Code zum Speichern von Bild in S3Cloud. Fügen Sie diesen Code in Ihre Uploadscript -Datei (wie Uploadify.php) hinzu, dass Sie Ihre eigene Uploadify -Skriptdatei haben.

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top