Ik heb een simpel stukje code in Flex die een bestand zou moeten uploaden naar de server:
Voor de verwerking gebruik ik php:
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.
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.