Flashhilfe.de - Flash Community

Probleme beim Upload mit FileReference [Flash 10]

 


AntwortenRegistrieren Seite1  

herrt#1
Benutzerbild von herrt
Beiträge: 9
Wohnort: berlin
Registriert: Jan 2009

12.02.2009, 18:35

Hallo

irgendwie komme ich mit FileReference nicht zurecht.
Folgendes Problem:

Ich möchte eine Datei über einen HTTP-POST Request an einen Server schicken.
Das mache ich doch über die FileReference Methode, oder ?
Also in etwa so:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private var fileRef:FileReference;
private const FILE_UPLOAD_URL:String = "http://192.168.0.3:8080/upload";

private function init():void
{
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, fileRef_select);
fileRef.browse();
}

private function fileRef_select(evt:Event):void
{
var request:URLRequest = new URLRequest(FILE_UPLOAD_URL);
request.method = URLRequestMethod.POST;
fileRef.upload(request);
}

Ist das prinzipell richtig ?

OK. Jetzt kommt das Problem.
Das Upload-Script erwartet eine Autorisierung.
Daher gebe ich dem URLRequest noch ein Ticket mit.
ActionScript:
1
2
3
4
5
6
var params:URLVariables = new URLVariables();
params.ticket = _ticket;
var request:URLRequest = new URLRequest(FILE_UPLOAD_URL);
request.method = URLRequestMethod.POST;
request.data = params;
fileRef.upload(request);


Leider funktioniert das nicht.
Der Server antwortet mit einem 401.

Jetzt bin ich mir nicht sicher.
Kann ich das überhaupt so machen ?
Oder geht das mit FileReference gar nicht ?

Und gibt es eine Möglichkeit den HTTP-Request zu sehen, den Flash an den Server schickt ?

Vielen Dank,
philipp
Geändert von herrt am 12.02.09 um 18:35 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


springer#2
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

12.02.2009, 19:30

wird überhaupt was hochgeladen? mal die listener registrieren und gucken...

ActionScript:
1
2
3
fileRef.addEventListener(ProgressEvent.PROGRESS, onFileProgress);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIO_ERROR);
fileRef.addEventListener(Event.COMPLETE, onUploadComplete);
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
herrt#3
Benutzerbild von herrt
Beiträge: 9
Wohnort: berlin
Registriert: Jan 2009

Themenautor/in

13.02.2009, 09:40

Hallo springer

ich habe jetzt folgende Listener
ActionScript:
1
2
3
4
5
6
fileRef.addEventListener(Event.SELECT, onSelect);
fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress);
fileRef.addEventListener(Event.COMPLETE, onComplete);
fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIO_ERROR);
fileRef.addEventListener(Event.COMPLETE, onUploadComplete);


wenn ich jetzt ein Upload versuche, bekomme ich zwei Fehler Meldungen.
Und zwar durch den HTTP_STATUS und durch den IO_ERROR.

Was ja aber auch vollkommen richtig ist. Ein 401 HTTP ruft ja dann einen IO_ERROR auf...

Gibt es eine Möglichkeit mehr über die Client / Server Kommunikation zu erfahren ?
Also, woher weiss ich welchen HTTP Request Flash jetzt wirklich an den Server schickt ?
Und was ist mit der Antwort ?


Vielen Dank,
philipp
springer#4
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

13.02.2009, 15:41

und was steht im IO_ERROR drin ?

fileRef.upload(xx,xx,xx);

es gibt 3 parameter, vielleicht kannst du da noch mehr rausfinden...

und noch die beiden sachen beachten:

1)
The FileReference.upload()  and FileReference.download()  functions are nonblocking. These functions return after they are called, before the file transmission is complete. In addition, if the FileReference object goes out of scope, any upload or download that is not yet completed on that object is canceled upon leaving the scope. Be sure that your FileReference object remains in scope for as long as the upload or download is expected to continue.

2)
Note  : If your server requires user authentication, only SWF files running in a browser — that is, using the browser plug-in or ActiveX control — can provide a dialog box to prompt the user for a username and password for authentication, and only for downloads. For uploads using the plug-in or ActiveX control, or for uploads and downloads using the stand-alone or external player, the file transfer fails.

When you use this method , consider the Flash Player security model:

    * Loading operations are not allowed if the calling SWF file is in an untrusted local sandbox.
    * The default behavior is to deny access between sandboxes. A website can enable access to a resource by adding a URL policy file.
    * You can prevent a SWF file from using this method by setting the allowNetworking parameter of the the object and embed tags in the HTML page that contains the SWF content.


nachzulesen in der flex language reference....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
Werbung
Beiträge: 0
Registriert: Feb 2016


herrt#5
Benutzerbild von herrt
Beiträge: 9
Wohnort: berlin
Registriert: Jan 2009

Themenautor/in

13.02.2009, 16:39

Die Listener Funktion:
ActionScript:
1
2
3
4
private function onIO_ERROR(evt:Event):void
{
Alert.show(evt.toString());
}


gibt das hier aus:
ActionScript:
1
2
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2
text="Error #2038: Datei-E/A-Fehler. URL: http://192.168.0.3:8080/alfresco/service/api/upload"]


Was du mit fileRef.upload(xx,xx,xx); meinst weiss ich nicht so genau.
Soll ich da noch Werte mitgeben ? Und wenn ja, welche ?

Die Hinweise aus der Flex Language Reference habe ich natürlich auch schon gelesen.
Ich muss allerdings zugeben, das ich nicht sicher bin, ob ich sie
a) verstanden haben :)
b) richtig anwende

Bei dem Scope bin ich mir nicht sicher. Aber das dürfte nciht das Problem sein.
Ich probier den Upload an dieser Beispiel Datei aus.
Da dürfte dann doch kein Scope Problem auftreten...

Meiner Meinung nach wird der Request auch gesendet, denn wenn ich die URL verändere, kommt kein 401, sondern ein 404 zurück.

Das Problem muss also irgendwo bei der Authenfizierung liegen :(

Kann ich irgendwie den Request sehen ?
Hab's schon mit sniffen versucht, aber da war komischer Weise auch nix zusehen...

Vielen vielen Dank für deine Hilfe.
Ich weiss echt nicht mehr weiter.

Liebe Grüße,
philipp
herrt#6
Benutzerbild von herrt
Beiträge: 9
Wohnort: berlin
Registriert: Jan 2009

Themenautor/in

13.02.2009, 17:28

Ok. Alles klar.
Ich habe die Kommunikation jetzt doch sniffen können.
Es ist wie vermutet. Flex macht alles richtig, bzw. der Request wird gesendet.

Jetzt muss ich nur noch rausbekommen, wie ich dem Script die Credentials mit gebe.
Aber grundsätzlich ist erstmal alles richtig.

Vielen Dank,
philipp
badskill#7
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

13.02.2009, 17:33

Ich meine mal gelesen zu haben, dass man die Credentials über den
ActionScript:
1URLRequestHeader
mitgeben kann. Möchte dafür aber nicht meine Hand ins Feuer legen.
springer#8
Benutzerbild von springer
Beiträge: 4909
Wohnort: zuhaus
Registriert: Apr 2004

13.02.2009, 18:28

oder Base64Encoder
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
herrt#9
Benutzerbild von herrt
Beiträge: 9
Wohnort: berlin
Registriert: Jan 2009

Themenautor/in

13.02.2009, 18:51

OK. Cool.

Vielen Dank für die beiden letzten Tipps.
Probier ich mal aus !

Nochmal vielen Dank und schönes Wochenende,
philipp
oleolson#10
Benutzerbild von oleolson
Beiträge: 589
Wohnort: essen
Registriert: Dec 2002

27.11.2009, 06:28

Und gibt es jetzt eine Lösung?
lg ole
___________________________________
http://www.skurrilewelt.de

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Ein PC und drei Monitore [Flash CS5] 10.09.2017 - Herzenslicht
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de