Andy E benar bahwa tidak ada cara berbasis HTML untuk melakukan ini *; tetapi jika Anda ingin menggunakan Flash, Anda dapat melakukannya. Berikut ini bekerja dengan andal pada sistem yang telah menginstal Flash. Jika aplikasi Anda perlu berfungsi di iPhone, maka tentu saja Anda memerlukan solusi berbasis HTML fallback.
* ( Pembaruan 4/22/2013: HTML sekarang mendukung ini, di HTML5. Lihat jawaban lainnya.)
Pengunggahan Flash juga memiliki keuntungan lain - Flash memberi Anda kemampuan untuk menampilkan bilah kemajuan saat pengunggahan file besar berlangsung. (Saya cukup yakin begitulah cara Gmail melakukannya, dengan menggunakan Flash di belakang layar, meskipun saya mungkin salah tentang itu.)
Berikut ini contoh aplikasi Flex 4 yang memungkinkan pengguna memilih file, lalu menampilkannya:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="init()">
<fx:Declarations>
</fx:Declarations>
<s:Button x="10" y="10" label="Choose file..." click="showFilePicker()" />
<mx:Image id="myImage" x="9" y="44"/>
<fx:Script>
<![CDATA[
private var fr:FileReference = new FileReference();
// Called when the app starts.
private function init():void
{
// Set up event handlers.
fr.addEventListener(Event.SELECT, onSelect);
fr.addEventListener(Event.COMPLETE, onComplete);
}
// Called when the user clicks "Choose file..."
private function showFilePicker():void
{
fr.browse();
}
// Called when fr.browse() dispatches Event.SELECT to indicate
// that the user has picked a file.
private function onSelect(e:Event):void
{
fr.load(); // start reading the file
}
// Called when fr.load() dispatches Event.COMPLETE to indicate
// that the file has finished loading.
private function onComplete(e:Event):void
{
myImage.data = fr.data; // load the file's data into the Image
}
]]>
</fx:Script>
</s:Application>