[AS3.0 & PHP] Probleem met FileReference (upload)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • F e r o x
  • Registratie: Mei 2006
  • Laatst online: 18-11-2024
Ik heb een simpel stukje code in Flex die een bestand zou moeten uploaden naar de server:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
            private var _refAddFiles:FileReferenceList;
            private var _arrUploadFiles:Array = new Array();
            private const _strUploadScript:String = "./upload.php";
            private var _refUploadFile:FileReference; 
            
            private function initApp():void {
                Security.allowDomain("./");
            }   
        
            private function addFiles():void
            {
                _refAddFiles = new FileReferenceList();
                _refAddFiles.addEventListener(Event.SELECT, onSelectFile);
                _refAddFiles.browse();
            }
    
            private function onSelectFile(event:Event):void
            {
                _arrUploadFiles.push({label:_refAddFiles.fileList[0].name, data:_refAddFiles.fileList[0]});
            }
            
            private function startUpload(booIsFirst:Boolean):void
            {                
                var sendVars:URLVariables = new URLVariables();
                sendVars.action = "upload";
                
                var request:URLRequest = new URLRequest();
                request.data = sendVars;
                request.url = _strUploadScript;
                request.method = URLRequestMethod.POST;
                _refUploadFile = new FileReference();
                _refUploadFile = _arrUploadFiles[0].data;
                _refUploadFile.addEventListener(IOErrorEvent.IO_ERROR, onUploadIoError);
                _refUploadFile.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError);
                _refUploadFile.upload(request, "file");
            }
            private function onUploadIoError(event:IOErrorEvent):void
            {
                mx.controls.Alert.show("IO Error in uploadbestand.", "Error");
                _refUploadFile.cancel();
            }
                
            private function onUploadSecurityError(event:SecurityErrorEvent):void
            {
                mx.controls.Alert.show("Security Error in uploadbestand.", "Error");
                _refUploadFile.cancel();
            }


Voor de verwerking gebruik ik php:
PHP:
1
2
3
4
5
6
7
8
9
<?php
if($_REQUEST['action'] == "upload") {
    $uploaddir = "./"; 

    if(is_uploaded_file($_FILES['file']['tmp_name'])) {
         move_uploaded_file($_FILES['file']['tmp_name'],$uploaddir.'/'.$_FILES['file']['name']);
    }
}
?>



Dit programma'tje werkt perfect op mijn lokale webserver ( MAMP ). Maar wanneer ik het op mijn webserver plaats, dan krijg ik altijd een IOErrerEvent. Zelfs wanneer ik mijn php-script niets laat uitvoeren. Het probleem moet dus waarschijnelijk ergens bij mijn flex-code liggen.

De server-map is ingesteld dat er kan worden geschreven.

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Weet je zeker dat je geen securityerror krijgt?

Acties:
  • 0 Henk 'm!

  • F e r o x
  • Registratie: Mei 2006
  • Laatst online: 18-11-2024
Neen, het is altijd een IOError.

Maar het probleem lijkt niet echt het schrijven naar de server te zijn. Wanneer ik mijn php-bestand niets laat uitvoeren (enkel php-sluittags), dan krijg ik al de IOError. Flex lijkt geen verbinding met het php-bestand te kunnen maken.

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Je kan ook trace(event) doen om te zien wat deze error precies vertelt.

Acties:
  • 0 Henk 'm!

  • F e r o x
  • Registratie: Mei 2006
  • Laatst online: 18-11-2024
Megamind schreef op zaterdag 10 oktober 2009 @ 12:04:
Je kan ook trace(event) doen om te zien wat deze error precies vertelt.
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2038: Bestands-I/O-fout. URL: http://www.url.com/test/upload.php"]

De link is zeker correct. Maar toch kan hij geen verbinding maken met het php-bestand.

php.ini is identiek op de lokale server als op de webserver.

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Heb je die flex app op hetzelfde domein staan?

Ik heb vaak ook problemen als ik een flash app vanaf bv localhost draai en deze probeer te laten verbinden met een externe server

Acties:
  • 0 Henk 'm!

  • F e r o x
  • Registratie: Mei 2006
  • Laatst online: 18-11-2024
Opgelost!

Probleem zat hem op de webserver. Hij was simpelweg te streng, en blokkeerde alles.

Ongelooflijk hoeveel probleempjes er altijd opduiken (maar zolang ze opgelost geraken valt het natuurlijk wel mee).

Bedankt voor de hulp alvast!
Pagina: 1