POST Datei-upload mit URLRequest

Ich habe eine kurze Frage bezüglich POST Datei-uploads in ActionScript 3. Ich versuche zum hochladen von einem ByteArray aus dem Gedächtnis per POST an einen server. Ich bin mit der URLRequest-Klasse zu senden, die Daten-und URLLoader-weil ich will, um den Fortschritt zu überwachen. Die relevanten Abschnitte des Codes folgt:

var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1/upload.php");
uploadRequest.method = URLRequestMethod.POST;
uploadRequest.contentType = "multipart/form-data";
uploadRequest.data = myByteArray;

var uploader:URLLoader = new URLLoader;
uploader.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
uploader.addEventListener(Event.COMPLETE, onUploadComplete);
uploader.dataFormat = URLLoaderDataFormat.BINARY;
uploader.load(uploadRequest);

Das problem ist, ich habe eingestellt, dass meine Rückrufe auf die Spur, die upload-Fortschritt und die bytesTotal-Eigenschaft des ProgressEvent-ist immer 1960 (die Größe der request-minus-Daten?), selbst wenn die eigentlichen Daten ist rund 20 MB und keine Datei hochgeladen ist auch nach dem Complete-Ereignis ausgelöst wird.

Ich habe festgestellt, dass upload.php Funktionen ordnungsgemäß mit einem einfachen html-Formular, und ich kann überprüfen, dass myByteArray enthält alle Daten in Frage. Kann mir jemand sagen was ich falsch mache?

Edit:

Habe ich versucht ein paar neue Dinge, die ich dachte, ich sollte erwähnen. Die erste ist die Einstellung der content-type auf application/octet-stream statt multipart/form-data, die hatte keinen anderen Effekt als die Erhöhung der Anzahl von bytes, die bis 1964. Ich habe auch überprüft der Apache-error-log und fand den folgenden text viel wiederholt:

PHP Warning: Missing Grenze in multipart/form-data-POST-Daten in Unknown on line 0

Ich vermute, dass Flash nicht die Formatierung die HTTP-Anfrage korrekt, warum auch immer. Gegeben, dass ich erstellt ein FileReference, die sich der gleichen Methoden, die ich für die URLLoader-hochladen einer Datei von der Festplatte, und bekam das erwartete Ergebnis: die bytesTotal-Eigenschaft abgestimmt die Größe der Datei und die Datei wurde korrekt hochgeladen.

Arbeiten aus, ich fand eine Seite in der Adobe developer docs erwähnt das hochladen von Daten auf einen server mithilfe von FileReference.Upload (hochladen) durch Einstellung der parameter data des URLRequest -, also versuchte ich den folgenden code:

var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1/upload.php");
uploadRequest.method = URLRequestMethod.POST;
uploadRequest.data = myByteArray;

fileRef = new FileReference;
fileRef.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
fileRef.addEventListener(Event.COMPLETE, onUploadComplete);
fileRef.upload(uploadRequest);

Führte in der folgenden Ausgabe:

ArgumentError: Error #2127: FileReference-POST-Daten kann nicht sein Typ ByteArray.

Ich bin wirklich hier hängengeblieben. Anregungen wäre dankbar!

Sie versucht - uploadRequest.contentType = "application/octet-stream";
Dasselbe Ergebnis, nur mit dem Unterschied, dass bytesTotal ist 1964 (die vier zusätzlichen Zeichen). Danke für die Anregung!
Ein kurzes update für alle interessierten. Ich habe in der Apache-error-log und jeder Versuch, die Datei hochzuladen Ergebnisse in dieser Zeile: "PHP Warning: Missing Grenze in multipart/form-data-POST-Daten in Unknown on line 0"

InformationsquelleAutor Tristan Shelton | 2012-03-04

Schreibe einen Kommentar