2012-03-27 3 views
4

Ich habe seit einiger Zeit browserbasierte direkte POST-Uploads mit Amazon S3 verwendet und wollte erst vor Kurzem über HTTPS posten. Normale HTTP-Posts funktionieren einwandfrei. Wenn ich jedoch das gleiche Formular an https://s3.amazonaws.com/ poste, erhalte ich eine "405 Method Not Allowed".Wie laden Sie Dateien direkt über SSL auf S3 hoch?

Werden browserbasierte direkte AWS POST-Uploads HTTPS nicht unterstützt? Wenn sie es tun, wie kann ich es tun, ohne einen 405 Fehler zu bekommen?

Danke!

Antwort

7

Es könnte ein Problem mit Ihrer HTML FORM-Aktion geben.

The action specifies the URL that processes the request, which must be set to the URL of the 
bucket. For example, if the name of your bucket is "johnsmith", the URL 
is "http://johnsmith.s3.amazonaws.com/". 

Bitte überprüfen Sie diese Dokumentation AMAZON S3 Link für weitere Informationen: http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html#HTTPPOSTFormDeclaration

Es hierzu auch eine andere Stelle ist. Amazon S3 - HTTPS/SSL - Is it possible?

UPDATE: konnte ich Objekte S3 Eimer über SSL laden mit diesem HTML & Policy.Check der Form Aktion.

Politik:

{ 
    "expiration": "2012-06-04T12:00:00.000Z", 
    "conditions": [ 
    {"bucket": "<YourBucketName>" }, 
    {"acl": "public-read" }, 
    ["eq", "$key", "testImage.jpg"], 
    ["starts-with", "$Content-Type", "image/jpeg"], 
    ] 
} 

HTML:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
<form action="https://s3.amazonaws.com/<YourBucketName>/" method="post" enctype="multipart/form-data"> 
<input type="text" name="key" value="testImage.jpg" /> 
<input type="text" name="acl" value="public-read" /> 
<input type="text" name="content-type" value="image/jpeg" /> 
<input type="hidden" name="AWSAccessKeyId" value="<YOUR ACCESS KEY>" /> 
<input type="hidden" name="policy" value="<YOUR GENERATED POLICY>" /> 
<input type="hidden" name="signature" value="<YOUR GENERATED SIGNATURE>" /> 
<input name="file" type="file" /> 
<input name="submit" value="Upload" type="submit" /> 
</form> 
</body> 
</html> 

Sie müssen wissen, wie codierte Politik und Unterschrift zu erzeugen.

+0

Wenn Sie eine HTTPS-URL mit einem benutzerdefinierten Bucket angeben, wird ein SSL-Fehler ausgelöst, was leider keine Option ist. –

+1

Ich bin mit HTTPS-URL mit benutzerdefinierten Bucket gelungen. wie https://s3.amazonaws.com//. Überprüfen Sie das Update auf meiner Antwort. – shashankaholic

+0

Danke! Ich muss die Quelle der Bibliothek überprüfen, die ich verwende, um zu sehen, wie sie die Signatur erzeugt. –