2013-04-29 12 views
6

Ich verwende signed POST, um die Datei direkt in Amazon S3 hochzuladen. Ich hatte einige Probleme mit der Unterzeichnung der Richtlinie mit PHP, aber endlich behoben und hier ist die sample of code.Verwenden Sie AWS S3 success_action_redirect-Richtlinie mit XHR

Diese xhr Anfrage wird in Javascript gesendet und ich warte auf eine Antwort von Amazon. Zuerst verwendete ich success_action_status, um es auf 201 zu setzen, um die XML-Antwort zu erhalten.

Was ich tun möchte, ist die Verwendung der success_action_redirect, um ein Skript auf meinem Server aufzurufen, um einen Datensatz in der Datenbank zu erstellen.

Der Grund, warum ich den Datensatz in der Datenbank erstellen konnte und wenn irgendetwas falsch in diesem Stadium passiert, kann ich eine Fehlermeldung direkt an dieser Stelle zurückgeben. Außerdem erspart es mir eine weitere Ajax-Anfrage an meinen Server.

Also habe ich versucht, dies unter Angabe der success_action_redirect bis http:\\localhost\callback.php wo ich ein Skript, das auf einige Parameter wartet.

Aber es sieht so aus, als ob dieses Skript nie aufgerufen wird und die Antwort von xhr.send() ist leer.

Ich denke, es ist ein Cross-Browser-Problem, und ich frage mich, ob es möglich wäre, jsonp irgendwie zu verwenden, um daran vorbeizugehen? Irgendwelche Ideen?

UPDATE

Anscheinend xhr native folgende Umleitung so sollte es funktionieren, aber wenn ich die success_action_redirect angegeben gibt es error Server responded with 0 code.

Zuerst dachte ich, es war, weil die Umleitungs-URL auf meinem lokalen Server war so Ich habe es zu einem zugänglichen Server geändert, aber keine Chance.

Wer weiß, warum es diese Fehlermeldung zurückgibt?

+0

Ich habe gerade aufgegeben, wie ich denke, dass es nicht möglich ist. XHR.send() gibt eine leere Antwort zurück, was bedeutet, dass Amazon meinen, dass meine Weiterleitungs-URL keine gültige URL ist. Ich weiß nicht warum und ich kann keine Dokumentation darüber finden :( – maxwell2022

+0

Haben Sie das gleiche Problem, kein Glück? –

+0

Nop, ich Handle den Rückruf auf der Client-Seite, in meinem Javascript-Code. – maxwell2022

Antwort

0

Ich lief auch auf dieses Problem. Es scheint, als hätte niemand eine Lösung für diese like this vielleicht die beste Problemumgehung, die ich gefunden habe, ist etwas wie this. Es scheint, dass die einzige Problemumgehung eine zweite xhr-Anforderung enthält, um den Rückruf manuell auszuführen. daher die

success_action_status

verwendet werden. Mit diesem erhalten Sie eine Antwort von 201, wenn der Upload erfolgreich war und Sie können eine zweite Anfrage für den eigentlichen Rückruf starten. Für mich sieht es momentan nach der einzig möglichen Lösung aus.

Irgendwelche anderen Lösungen?