2010-12-11 76 views
0

有沒有辦法構建另一個可以啓用文件發佈到服務器的元素?
在不使用標記我可以生成一個自定義<input type = file>

<input type='file'> 
+0

只是出於好奇 – shevski 2010-12-11 22:46:55

+0

你的目標是什麼? – ynh 2010-12-11 22:48:08

+0

如果你看看元素髮布到服務器上,你會發現它們中的很多被解析爲數組或簡單類型,但是文件只能使用該標籤發送,我認爲這有些問題。 (您甚至可以在瀏覽器地址欄中將文本發送到服務器)。 – shevski 2010-12-11 22:50:26

回答

2

如果你想要做拖和下降,則可以使用從HTML5的新drag and drop stuff(在Firefox和Chrome支持作爲)。這並不需要input type='file'

否則,您無法在沒有input type='file'元素的純HTML + JavaScript中執行此操作。由於thejh points out(在一個現在被刪除的答案中),你可以做到這一點,而不需要使用File API實際提交表單,但仍然需要使用input type='file'(儘管它不需要提交表單和刷新頁面)。使用JavaScript和File API讀取文件的Here's an example(這裏是SO);從那裏,通過ajax發送它是一個微不足道的步驟。這對於在支持File API的瀏覽器(進度條,早期檢測和報告不支持的文件類型,早期檢測和報告太大的文件等)上提供增強的用戶體驗很有用。

當然,您可以使用非HTML/JavaScript技術(如Flash和(帶符號)Java小程序)執行此操作,但如果您正在尋找一種「純粹的」無插件機制,那麼舊版本input type='file'仍然是你唯一的選擇。儘管如此,您可以通過支持它的瀏覽器上的File API逐步增強它,這很有用。

+0

下垂者是否願意提供一些有用的反饋? – 2010-12-12 05:30:01

+0

感謝您的詳細解答。 – shevski 2010-12-12 11:14:17

1

您可以通過FLASH做到這一點,但我不認爲這是在HTML中任何其他方式。

爲什麼你不想使用輸入?

無論如何,檢查出uploadify(漂亮的jQuery插件),可能會有所幫助:http://www.uploadify.com/

+0

是的,我用過這個。是否將默認輸入框更改爲圖像。沒有問題。 – DMin 2010-12-11 23:42:21

相關問題