在一些網(wǎng)站進行上傳時,當(dāng)單擊了“瀏覽”按鈕之后會彈出【選擇文件】的對話框。很多時候我們需要只上傳圖像文件,那么在彈出的【選擇文件】對話框中只顯示了相關(guān)圖片格式的文件,此外其余格式文件一律過濾不被顯示。
比如 http://www.youku.com/v1.0.0326/v/swf/up.swf
這是優(yōu)酷的視頻上傳選擇,其是通過FLASH的方法來實現(xiàn)了不顯示非視頻類文件。
FLASH到這種效果一般也就是如這里所描述的
import flash.net.FileReferenceList;
var fileRef:FileReferenceList = new FileReferenceList();
var allTypes:Array = [];
var 瀏覽類型:Object = new Object();
瀏覽類型.description = "瀏覽類型(*.mp3)";
瀏覽類型.extension = "*.mp3";
allTypes.push(瀏覽類型);
fileRef.browse(allTypes);
所以針對我們的網(wǎng)頁中<input type="File">能不能也實現(xiàn)彈出窗口限制文件類型呢?
現(xiàn)在的解決方法只能是通過監(jiān)測來提醒用戶上傳文件的格式不正確
<script>
function check(){
var filepath=path.value
filepath=filepath.substring(filepath.lastIndexOf('.') 1,filepath.length)
if(filepath != 'jpg' && filepath != 'gif')
alert("只能上傳JPG或GIF格式的圖片")
}
</script>
<input type=file name=path onpropertychange="check()"> (只能上傳JPG或GIF格式的圖片)
<script>
function ck(obj){if(obj.value.length>0){
var af="jpg,gif,png,zip,rar,txt,htm";
if(eval("with(obj.value)if(!/" af.split(",").join("|") "/ig.test(substring(lastIndexOf('.') 1,length)))1;")){alert("Allowed file types:\n" af);obj.createTextRange().execCommand('delete')};
}}
</script>
<form>
<input type=file name=path onpropertychange="ck(this)"/></form>
不過這種效果顯然沒有FLASH的用戶體驗好。有必要對這類FLASH上傳關(guān)注一下了。