1

nicht korrekt verwenden Unter Verwendung einer vor-signierten URL versuche ich ein Objekt (ein Bild) in meinem AWS S3-Bucket mit JavaScript fetch PUT.Kann Fetch zu PUT-Datei unter S3

Unten ist der Codeschnipsel, den ich verwende, ausgelöst durch ein Änderungsereignis bei einer Datei-Upload-Eingabe.

// The event here is from a change 
// trigger on the file input 
const target = event.target 
const file = target.files[0] 
const reader = new FileReader() 

reader.onload = (event) => { 
    fetch(PRESIGNED_S3_URL, { 
    method: 'put', 
    body: event.target.result, 
    headers: new Headers({ 
     'Content-Type': file.type 
    }), 
    }).then((response) => { 
    response.json().then((data) => { 
     // Success 
    }) 
    }) 
} 

// Read the selected file 
reader.readAsText(file) 

Das Hochladen ist in der Tat die Datei, dessen Namen und Dateityp Einstellung richtig, aber wenn ich versuche, um die Datei anzuzeigen ist es beschädigt.

Ich bin fest auf, was ich falsch mache, um den Inhalt der Datei zu lesen und hochzuladen. Jede Hilfe wird geschätzt!

+0

Sollte der Körper 'target.files [0]' sein? – Alan

+0

@Alan Negativ - 'event.target' an diesem Punkt ist das Ereignis von' FileReader', das nur 'result' erzeugt (was der Inhalt der gelesenen Datei ist) –

+0

Welchen Browser benutzen Sie? Verwenden Sie irgendwelche Bibliotheken für diesen Zweck? Normalerweise verhält sich Javascript in verschiedenen Browsern anders. Um dies zu vermeiden, verwenden Sie ein JavaScript-Framework wie angularJs oder jQuery. Sie können das korrekte Ergebnis erhalten, wenn Sie dasselbe über eine andere JavaScript-Methode, ein anderes Objekt oder Framework ausführen. –

Antwort

0

Um ein Bild hochzuladen, müssen Sie die Inhaltsverarbeitung auf CONVERT_TO_BINARY setzen.