# Retry Upload File on SSL error

**URL:** <https://forum.kirupa.com/t/retry-upload-file-on-ssl-error/319670>\
**Category:** flash\
**Created:** [March 1, 2011, 7:08am UTC](https://forum.kirupa.com/t/retry-upload-file-on-ssl-error/319670 "2011-03-01T07:08:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![kszo](https://avatars.discourse-cdn.com/v4/letter/k/9dc877/32.png) [@kszo](https://forum.kirupa.com/u/kszo)\
**Post date:** [March 1, 2011, 7:08am UTC](https://forum.kirupa.com/t/retry-upload-file-on-ssl-error/319670/1 "2011-03-01T07:08:01Z")

</div>

Hi,

I had some problems with my SSL (GeoTrust).  
On some browsers (mostly FF3.6 on WinXP), uploading a file using flash over SSL gives me an IOError.

Something I found out is that uploading without SSL works even the site is on SSL.

I thought about trying to upload with SSL (https://) and if it fails, retry without SSL ([URL=“http://%29”]http://).

The problem is that when I retry uploading without SSL the UPLOAD\_COMPLETE\_DATA won’t trigger.

Tried removing and adding all the events, adding a cancel before retrying but it didn’t work…

Here’s the code:

```auto

btUpload.addEventListener(MouseEvent.CLICK, btUpload_CLICK);
function btUpload_CLICK(event:MouseEvent):void{
    uploadFile = new FileReference();
    uploadFile.addEventListener(Event.SELECT, fileSelected);
    uploadFile.addEventListener(Event.CANCEL, selectionCanceled);
    uploadFile.browse(new Array(new FileFilter("Document (*.doc,*.xls,*.ppt,*.txt)","*.doc;*.xls;*.ppt;*.txt")));
}
function fileSelected(event:Event):void{
    uploadFile.removeEventListener(Event.SELECT, fileSelected);
    uploadFile.removeEventListener(Event.CANCEL, selectionCanceled);
    
    var URLVar:URLVariables = new URLVariables();
    URLVar.id = id;
    URLVar.MAX_FILE_SIZE = "52428800";

    var URLReq:URLRequest = new URLRequest("https://www.server.com/uploadfile.php");
    URLReq.method = URLRequestMethod.POST;
    URLReq.data = URLVar;
    URLReq.requestHeaders;
    uploadFile.addEventListener(ProgressEvent.PROGRESS , fileProgress);
    uploadFile.addEventListener(Event.COMPLETE, fileUploaded);
    uploadFile.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
    uploadFile.addEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
    uploadFile.addEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
    uploadFile.upload(URLReq);
    function fileProgress(event:ProgressEvent):void{
        trace(event.bytesLoaded + " of " + event.bytesTotal + " bytes uploaded");
    }
    function fileUploaded(event:Event):void{
        uploadFile.removeEventListener(Event.COMPLETE, fileUploaded);
        trace("Uploaded");
    }
    function fileUploadComplete(event:DataEvent):void{
        uploadFile.removeEventListener(ProgressEvent.PROGRESS , fileProgress);
        uploadFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
        uploadFile.removeEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
        uploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
        if(event.data == "1"){
            trace("Upload is ok");
        }else{
            trace("Upload error");
        }
    }
    function fileUploadIOError(event:IOErrorEvent):void{
        if(URLReq.url.search("https://")==0){//Error Using SSL
            trace("retry upload with no ssl");
            URLReq.url = "http://www.server.com/uploadfile.php";
            uploadFile.upload(URLReq);
        }else{
            uploadFile.removeEventListener(ProgressEvent.PROGRESS , fileProgress);
            uploadFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
            uploadFile.removeEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
            uploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
            trace("IOError on upload");
        }
    }
    function fileUploadSecurityError(event:SecurityErrorEvent):void{
        uploadFile.removeEventListener(ProgressEvent.PROGRESS , fileProgress);
        uploadFile.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileUploadComplete);
        uploadFile.removeEventListener(IOErrorEvent.IO_ERROR, fileUploadIOError);
        uploadFile.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, fileUploadSecurityError);
        trace("Upload Security Error (0015)");
    }
}
function selectionCanceled(event:Event):void{
    uploadFile.removeEventListener(Event.SELECT, fileSelected);
    uploadFile.removeEventListener(Event.CANCEL, selectionCanceled);
}

```

Any idea for a work around?  
Thanks.
