2016-08-30 2 views
0

Ich weiß, dass es möglich ist, die Dateigröße mit dem content-length-range Header zu begrenzen. Aber ist es möglich, den Dateityp zu validieren?S3 Vor-signierter POST Validiert Dateityp?

https://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTForms.html#PolicyConditions

Ich sehe es ein ist Content-Type Header, wenn ich diesen Satz zu sagen, würde audio/mp3 dass nur MP3-Dateien erlauben und einen Fehler zurück, wenn die Datei nicht ein mp3 ist?

fand ich diese vorherige Frage, aber die Antworten nur erwähnen die Dateigröße Validieren: s3 direct upload restricting file size and type

Antwort

1

Sie den Content-Type auf Ihrer POST-Anfrage angeben.

Sie können es auch bei Ihrer Unterschrift angeben, so dass die Post muss mit dem Content-Type erfolgen:

{ "expiration": "2007-12-01T12:00:00.000Z", 
    "conditions": [ 
    {"acl": "public-read" }, 
    {"bucket": "johnsmith" }, 
    {"Content-Type: "audio/mp3"} 
    ] 
} 

Creating an HTML Form (Using AWS Signature Version 4)

edit: Bei der vorherigen Frage, die Sie gefunden, sie sind eigentlich Überprüfen des Inhaltstyps

+1

Ich habe den 'Content-Type' in der Richtlinie angegeben, aber ich denke, das bedeutet nur, dass dieser Header zu jeder Datei hinzugefügt wird, die hochgeladen wird. Ich habe gerade versucht, ein PNG-Bild hochzuladen, und es wird immer noch hochgeladen, wobei der Metadaten-Titel "Content-Type: audio/mp3" hinzugefügt wird. – Chris

+0

Der Inhaltstyp der Richtlinie muss mit dem in der POST-Anforderung gesendeten Inhaltstyp übereinstimmen. Sie können also den Inhaltstyp in Ihrem Back-End (oder wo immer Sie die Signaturen erstellen) festlegen, anstatt den Inhaltstyp zu senden vom Frontend. Sie können den Inhaltstyp auch beim Signieren in Ihrem Backend überprüfen und scheitern, wenn der Inhaltstyp nicht Ihren Vorstellungen entspricht. – Alomsimoy

+0

Also musste ich den Content-Type-Header ändern, wenn der Benutzer eine Datei auswählt, die hochgeladen werden soll, bevor er das Formular abschickt? – Chris