-1

I am uploading a file using flex using Base64Encoder. but it is showing error when putting data on HTTPService as param when file size is more than 1MB. Please help in this. Thanks in advance.

Showing Following error: Error: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error.

Function which I have written is as follows:

    protected function uploadButton_clickHandler(event:Event):void{
            try{
                var uniqueRowId:String=parentApplication.dg.dataProvider[parentApplication.dg.selectedIndex].UNIQUEROWID;
                var propObj:Object = parentApplication.propertyDict[uniqueRowId];
                fileRef = propObj["fileRef_"+uniqueRowId];

                fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,onUploadComplete);
                fileRef.addEventListener(IOErrorEvent.IO_ERROR,onIOError);

                var selectedAttachment : String = propObj["selectedObjectStr_"+uniqueRowId];
                var UPLOAD_URL:String="/MDOSF/Customer_tab.do"; 
                var ext:String = selectedAttachment.substr(selectedAttachment.lastIndexOf("."), selectedAttachment.length);
                ext = ext.toLowerCase();                    
                var imgByteArr:ByteArray = event.target.data;
                var encoder:Base64Encoder = new Base64Encoder();    
                var totalBytes:uint = imgByteArr.length;
                var limitBytes:String = String((totalBytes/1024)/1024);
                var numericBytes:Number =Number(limitBytes);
                var decimal:String = numericBytes.toFixed(2);
                if(Number(decimal) > 1){
                    //Alert.show("Cannot upload file with size more than 1 MB","Message");
                    //return;
                }
                encoder.encodeBytes(imgByteArr);                    
                var params:Object = new Object();
                params.fileName = encodeURIComponent(selectedAttachment);
                params.ext = ext;
                params.file_data = encodeURIComponent(encoder.flush());
                params.action = "saveAttachment";
                params.GRID_PARAM = "fromGrid";
                params.selectedFile = encodeURIComponent(selectedAttachment);
                params.gridName = parentApplication.fieldName;
                uploadImageService.url = UPLOAD_URL;
                uploadImageService.send(params);

            }catch(err:Error){
            }
        }
ketan
  • 19,129
  • 42
  • 60
  • 98
akki
  • 9
  • 1

1 Answers1

0

Most web servers limit GET requests to 8KB (but servers may very). By default, HTTPService uses GET method. I'd recommend adding:

uploadImageService.method = 'POST';

Just before you call uploadImageService.send(params);, you'll also need to adjust your Java code to work with POST method over GET.

Community
  • 1
  • 1
CyanAngel
  • 1,240
  • 1
  • 14
  • 28