Ich versuche, eine Datei direkt vom Browser auf S3 hochzuladen. Dafür erstelle ich eine signierte Upload-URL auf meinem Server.Das Hochladen auf S3 über den Browser mit der URL für den signierten Upload schlägt fehl
Wenn ich versuche, eine Datei an die generierte URL aus dem Browser
var xhr = new XMLHttpRequest();
xhr.open('PUT', signedUrl);
xhr.send(file);
I
<Error>
<Code>
SignatureDoesNotMatch
</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
...
</Error>
mit laden Sie sich einfach den folgenden Fehlern, die ich auf die signierte URL hochladen kann unter Verwendung von curl mit folgenden Befehl
curl -T <file> -X PUT '<signed-url>'
Der Browser sendet meine Anfrage als mehrteilige Daten, die c ist ause das Problem. Wie behebe ich das Problem?
ich die signierte URL zu erzeugen den folgenden Code
var params = {
Bucket: bucket,
Key: s3Key,
ACL: "authenticated-read",
Expires: 600
};
S3.getSignedUrl('putObject', params, (err, data) => {
const returnData = {
url: data
};
reply(returnData);
});
bearbeiten mit: Nur klar zu sein, habe ich alle Ursprünge erlaubt PUT-Anfragen in Eimer CORS Konfiguration zu senden.