Sie haben versucht, ohne ein Bild von React Native mit vor-signierter URL in S3 hochzuladen. Hier ist mein Code:Native Upload auf S3 mit vorgebrachter URL reaktivieren
erzeugen Pre-signierten URL in Knoten:
const s3 = new aws.S3();
const s3Params = {
Bucket: bucket,
Key: fileName,
Expires: 60,
ContentType: 'image/jpeg',
ACL: 'public-read'
};
return s3.getSignedUrl('putObject', s3Params);
hier ist RN Anfrage S3:
var file = {
uri: game.pictureToSubmitUri,
type: 'image/jpeg',
name: 'image.jpg',
};
const xhr = new XMLHttpRequest();
var body = new FormData();
body.append('file', file);
xhr.open('PUT', signedRequest);
xhr.onreadystatechange =() => {
if(xhr.readyState === 4){
if(xhr.status === 200){
alert('Posted!');
}
else{
alert('Could not upload file.');
}
}
};
xhr.send(body);
game.pictureToSubmitUri = assets-library://asset/asset.JPG?id=A282A2C5-31C8-489F-9652-7D3BD5A1FAA4&ext=JPG
signedRequest = https://my-bucket.s3-us-west-1.amazonaws.com/8bd2d4b9-3206-4bff-944d-e06f872d8be3?AWSAccessKeyId=AKIAIOLHQY4GAXN26FOQ&Content-Type=image%2Fjpeg&Expires=1465671117&Signature=bkQIp5lgzuYrt2vyl7rqpCXPcps%3D&x-amz-acl=public-read
Fehlermeldung:
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
Ich kann erfolgreich curl und Bild S3 die erzeugte URL, und ich scheinen in der Lage zu sein, erfolgreich von RN requestb.in Post (aber ich kann nur die Rohdaten auf requestb.in sehen so nicht 100% sicher, dass das Bild dort richtig ist).
auf all dieser Grundlage habe ich bis zu 1 mein Problem verengt) mein Bild ist Zeit nicht richtig hochladen, oder 2) irgendwie die Art und Weise S3 will meine Anfrage dann anders ist, wie es in.
kommt Jede Hilfe wäre muuuuucchhhh geschätzt!
UPDATE
erfolgreich von RN veröffentlichen können bis S3, wenn Körper nur Text ({ 'data': 'foo'}) ist. Vielleicht mag AWS keine mehrdimensionalen Daten? Wie kann ich nur eine Datei in RN schicken ???
Nicht sicher, warum Ihre Signatur ungültig ist. Ich habe fast den gleichen Signaturcode und es funktioniert gut. Ihre leeren erfolgreichen Uploads sind darauf zurückzuführen, dass Sie einen Pfad als URI übergeben. 'file: /// var /.../ 4BBAE22E-DADC-4240-A266-8E469C0636B8.jpg' sollte funktionieren. –
Hat Ihr AWS Secret Key eine abschließende Weiterleitung "/"? – error2007s
@DanielBasedow Ich glaube nicht, dass die Signatur ungültig ist. Ich kann locken, um Bilder damit hochzuladen. Ich denke, etwas stimmt nicht damit, wie meine RN-Anfrage formuliert wird? – Cole