Skip to main content

Download a file using FileReference in Flex

Following function gives an example of how to doanload a file in Flex.
"file" object passed to the function is a simple object having following structure:
file.fileName = "Abc.png"
file.fileType = "image/png"
file.url = "/documents/Abc.png"
A pattern match-replacement is used to determine file extension, in case fileName does not have it.

public function downloadFile(file:Object):void
{
    if (file != null)
    {
        var fileName:String = (file.fileName != null && file.fileName.length > 0) ? file.fileName : (new Date()).time.toString();
        var fileExtension:String = file.fileExtension;

        if (fileName.indexOf(".") < 0)
        {
            if (fileExtension.lastIndexOf(".") >= 0)
                fileExtension = fileExtension.slice(fileExtension.lastIndexOf("."), fileExtension.length);
            else if (fileExtension.lastIndexOf("/") >= 0)
                fileExtension = "." + fileExtension.slice(fileExtension.lastIndexOf("/"), fileExtension.length);
            else
                fileExtension = "." + fileExtension;

            // Replace characters not supported by download.  / \ : * ? " < > | % with _
            var pattern:RegExp = /([\/\\:\*\?\"\<\>\|\%])/g;
            fileName += fileExtension.replace(pattern, "_");
        }

        var urlRequest:URLRequest = new URLRequest(file.url);
        var fileRef:FileReference = new FileReference();
        fileRef.addEventListener(IOErrorEvent.IO_ERROR, fileDownloadError);
        fileRef.download(urlRequest, fileName);
    }

    function fileDownloadError(event:IOErrorEvent):void
    {
        Alert.show("Error encountered while downloding the file:\n." + event.text, "Error");
    }
}

Comments

Popular posts from this blog

Procedure for name and date of birth change (Pune)

For change of name, the form (scribd) is available free of cost at Government Book Depot (Shaskiya Granthagar), which is located near Collector’s office, next to Saint Helena's School. The postal address is: Government Photozinco Press Premises and Book Depot, 5, Photozinco Press Road, Pune, MH, 411001. Wikimapia link Charges for name or date of birth change, in the Maharashtra Government Gazette: INR 120.00 per insertion (for two copies of the Gazette) For backward class applicants: INR 60.00 Charges for extra copy of the Gazette: INR 15.00 per copy (two copies are enough, so you may not want to pay extra for extra copies). Backward class applicants are required to submit a xerox of caste certificate of old name as issued by the Collector of the District concerned. Once the form is duly submitted, it normally takes 10 to 15 days for publication of advertisement in the Maharashtra Government Gazette. The Gazette copy reaches to the address filled in the form within nex...

Eclipse crashing and not starting

Problem: After restarting Eclipse, it crashes immediately and asks me to check C:\Users\username\Adobe Flash Builder 4.6\.metadata\.log In log it shows following error: !ENTRY org.eclipse.osgi 4 0 2013-02-13 11:53:46.760 !MESSAGE Application error !STACK 1 org.eclipse.swt.SWTError: Cannot initialize Drop     at org.eclipse.swt.dnd.DND.error(DND.java:266)     at org.eclipse.swt.dnd.DND.error(DND.java:227)     at org.eclipse.swt.dnd.DropTarget. (DropTarget.java:142)     at org.eclipse.ui.internal.EditorSashContainer.addDropSupport(EditorSashContainer.java:542)     at org.eclipse.ui.internal.EditorSashContainer.createControl(EditorSashContainer.java:534)     at org.eclipse.ui.internal.EditorAreaHelper. (EditorAreaHelper.java:41)     at org.eclipse.ui.internal.WorkbenchPage.init(WorkbenchPage.java:2507)     at org.eclipse.ui.internal.WorkbenchPage. (Workbench...

Kafka performance tuning

Performance Tuning of Kafka is critical when your cluster grow in size. Below are few points to consider to improve Kafka performance: Consumer group ID : Never use same exact consumer group ID for dozens of machines consuming from different topics. All of those commits will end up on the same exact partition of __consumer_offsets , hence the same broker, and this might in turn cause performance problems. Choose the consumer group ID to group_id+topic_name . Skewed : A broker is skewed if its number of partitions is greater that the average of partitions per broker on the given topic. Example: 2 brokers share 4 partitions, if one of them has 3 partitions, it is skewed (3 > 2). Try to make sure that none of the brokers is skewed. Spread : Brokers spread is the percentage of brokers in the cluster that has partitions for the given topic. Example: 3 brokers share a topic that has 2 partitions, so 66% of the brokers have partitions for this topic. Try to achieve 100% broker spread...