大家是如何知道 nctype="multipart/form-data" 的功能是以二進位上傳文件的?

我的意思是我通過百度然後知道了 enctype="multipart/form-data"把文件通過二進位的方式上傳到伺服器!

我查了w3school 上面只說了 「不對字元編碼。在使用包含文件上傳控制項的表單時,必須使用該值。」;

我想問一下,這個知識大家都是怎麼發現的?難道都是百度了解的原理?

學習的編程的過程中應該去哪裡查找這些知識點本質的東西?有沒有什麼大全之類的,囊括了所有的方方面面的知識點。

其實我就是想請教一下,大家都是以什麼方式和渠道獲得這些類似的知識的?


題主打錯啦,是 enctype 不是 nctype ~

首先這種東西一般只要你按照任何一本正常一點的入門書去學,都會提到的……進入完全不熟的領域的時候還是用看書入門比較好。

如果已經對這個領域有一定的了解,但是在實際工作的時候總有點東西記不起來,這時候一般有如下幾種辦法:

  1. 記得在某本書上看過 or 自己在某個代碼里寫過,去看書 or 代碼
  2. 能記憶起來的相關點實在太少,完全不知道該往哪找,就去搜索引擎把自己能想到的關鍵詞都丟上去(技術類的推薦用 Google + 英文關鍵詞)
  3. 除了自己的問題是什麼以外,你啥都不清楚,那麼可以去 Stack Overflow 提問(不過一般你能在 Google 找到的,都不需要再去問了,而且很多時候你在 Google 找到的就是裡面的回答……)

  4. 大約記得自己要找什麼,不過不太清楚細節,這個時候就去找相關領域比較好的 reference 站點(最好自帶搜索),比如前端開發就去 Mozilla Developer Network ,題主想知道的 enctype 就在 & - HTML (HyperText Markup Language) 。
  5. 要查非常細節的東西,可能就需要去翻標準了。前端的一般是去 WHATWG(https://whatwg.org/ )或者 W3C ( All Standards and Drafts )的站點看各種 API,HTML 和 CSS 的標準,JavaScript 方面的有時候需要看 ECMAScript 標準: Welcome to Ecma International。如果不太清楚自己具體要找哪份標準,可以去 3 提到的 Mozilla Developer Network 搜索相關頁面,裡面一般提供各種相關標準的傳送門。比如前面提到的 & - HTML (HyperText Markup Language) 裡面就提供了通往 WHATWG、W3C HTML5,W3C HTML 4.01 相關標準的傳送門。另外還有一個後台龐大的的 Your Web, documented · WebPlatform.org ,不過感覺目前文檔不太全……還有要注意,看 W3C 的標準需要注意標準的 status,一般進入 Recommendation 狀態的實現會比較全,也不會怎麼改了。如果是 working draft / editor draft,一般實現不全而且經常變。

  6. 再然後,標準里寫的和瀏覽器實現很多時候有比較大的差距,查瀏覽器兼容的話,前面提到的 Mozilla Developer Network 本身就有比較完善的瀏覽器兼容性整理(在各種相關頁面下面會有一個總結的表格和各種 Tips),Compatibility overview 也很不錯,最近發現 http://help.dottoro.com/ 也蠻好的。要查 HTML5、CSS3 等新技術的兼容性還可以去 Can I use... Support tables for HTML5, CSS3, etc 。對於國內需要兼容比較多瀏覽器(包括IE6-8)的情況,W3Help - 兼容性 也是一個不錯的參考。

  7. 如果要查 IE 的私有 API,或者部分 IE 首創、其他瀏覽器跟進,但尚未標準化的東西,可以去 Windows Internet Explorer Developer Documentation (Internet Explorer)
  8. jQuery 相關去 jQuery API Documentation,Node.js 相關去 Node.js v0.10.34 Manual Documentation,等等。各種比較有名的庫/框架直接去官網即可,不知道官網的可以直接 Google 它的名字,一般第一個蹦出來的就是官網。
  9. 開源庫、工具之類的東西,有官網的看官網,沒官網的一般也有 Github,上面一般有文檔。

個人體驗是 MDN + Google 一般可以解決 90% 的日常問題……

另外寫了這麼多,發現題主貌似是想知道這些東西最終是怎麼來的?一般來說有兩種:

  1. 瀏覽器的開發人員發明的,然後給他們寫文檔說明怎麼用,後來其他瀏覽器跟進,再然後被組織(比如 W3C)標準化。不同瀏覽器的開發人員也會相互交流合作,比如可以去 WHATWG 的郵件列表看看他們怎麼交流的……

  2. 先有標準,再有實現,比如 ECMAScript 和 W3C 的 HTML/CSS/JavaScript API 標準。至於標準怎麼來的,一般是各瀏覽器廠商和有關人士們討(nao)論(dong)出來的……


http協議,有很多書和資料講,還有牛人會直接看rfc

不好好看書,就容易出來你這種狀況,湊合用,不求甚解


看書。


從字面上看出來的,一個urlencode,一個data,難道不是看一眼就知道嗎?


1. 學好英文, 學會翻牆.

2. 協議誰定的,就看誰的文檔, 比如HTML, 直接看RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1

3. 如果協議未指明的, 那就看所使用工具的文檔.

4. 如果暫時找不到, 沒耐心看文檔, 直接動手編碼實驗獲取結果也是可行的.


http://www.w3.org/TR/html/forms.html#form-submission-0


學jsp時上傳文件用到這個,發現普通的表單信息無法用getParma獲得。然後一查資料就知道了


某天有一個需求,寫一個自定義的 HTTP 代理伺服器,在中途攔截修改+渲染所有通過代理的數據。

因此 找了 HTTP 權威指南 + RFC 文檔(不止一份)+RFC沒有提到的其他東西,從頭啃到尾。

後來還涉及到DNS 服務實現,FTP SSL等,所有都是從RFC來的。

自此,學什麼第一件事就是 找官方文檔+協議標準,差不多了。


我是看公司的代碼發現的。


推薦閱讀:

如何學好 HTML ?
學完了html和css怎麼做靜態網頁啊,沒有頭緒,初學者都是這樣的么,感覺手拿筷子,不知道怎麼用?
第一次看HTML教程是怎樣一種體驗?
普通文檔流的數字串遇到浮動塊為什麼不自動換行而是直接流到浮動塊底部的一行?
非計算機想從事前端開發,如何找到實習?

TAG:HTML | 程序員 | 編程 | 信息技術IT | 編程學習 |