2016-04-16 7 views
1

Ich werde Bild auf Amazon S3 in React Native hochladen.Wie kann ich Bilder direkt auf Amazon S3 in React Native hochladen?

Ich habe S3 signierteUrl für das Hochladen von Bild.

Wie kann ich Bild mit dieser URL in React Native hochladen?

Wenn jemand dies versucht, bitte helfen Sie mir.

Vielen Dank!

+0

Was Sie mit dem URL tun sollen? Es ist nur ein POST? Wenn ja, machen Sie die Anfrage mit FETCH. Weitere Details wären hilfreich. – rooftop

Antwort

0

Sie können nur fetch wie folgt verwendet werden:

import { ImagePickerIOS } from 'react-native'; 

ImagePickerIOS.openSelectDialog({},(assetUri)=>{ 
    var photo = { 
    uri: assetUri, 
    type: 'image/jpeg', 
    name: 'main.jpg' 
    } 

    var body = new FormData(); 
    body.append('file', photo); 

    fetch(presignedUrl, { 
    method: 'put', body: body 
    }); 
},()=>{ console.log('failed'); }) 
+0

Hast du es getestet? –

+0

sicher! das ist mein Code-Snippet in der Vergangenheit. Sie müssen auch Backend haben, um 's3 presignedUrl' –

+0

zu generieren Es funktioniert nicht. Sie können Formulardaten nicht mit PUT senden. Sie müssen die Dokumentation lesen, bevor Sie Ihre Antwort posten, oder sogar Ihren Code testen. Abschnitt 9.6 http://www.ietf.org/rfc/rfc2616.txt –

4

Es ist ganz einfach, ich viel Zeit damit verbracht, dass zu entdecken:

const xhr = new XMLHttpRequest() 
xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4) { 
    if (xhr.status === 200) { 
     // success 
    } else { 
     // failure 
    } 
    } 
} 
xhr.open('PUT', presignedUrl) 
xhr.setRequestHeader('Content-Type', fileType) 
xhr.send({ uri: filePath, type: fileType, name: fileName }) 
  • filePath ist der vollständige Pfad zu die Datei
  • dateiType ist der Mime-Typ von th e Datei
  • filename ist der Dateiname

Quelle: http://blog.rudikovac.com/react-native-upload-any-file-to-s3-with-a-presigned-url/

+1

Ich sollte darauf hinweisen, dass die präsignierte URL mit dem Content-Type signiert sein muss (wie 'image/png', etc.). Dieser clientseitige Code funktionierte nicht, bis wir auf der Server-Seite korrekt signiert hatten. –

Verwandte Themen