Mexx 的个人资料我們走吧 我們回去照片日志列表更多 ![]() | 帮助 |
|
9月13日 HtmlInputFile、HttpPostedFile、FileUpload 在 ASP.Net 1.x 的時候,我們用 HTML File Field(HtmlInputFile) 手動設 runat="server" 做檔案上傳,要直接操作 HttpPostedFile。 到了 ASP.Net 2.0,新增了 FileUpload 伺服器控制項,包裝了一點點程式碼,我們不用再直接操作 HttpPostedFile,程式稍微簡潔了些。但是其內部還是在操作 HttpPostedFile。真正有價值的差異是 FileUpload 控制項的 FileBytes 屬性。 FileBytes 回傳的是 byte 陣列,等於是幫我們做了序列化,讓檔案上傳機制有了更多可能性,可以更方便的將檔案內容直接轉存到資料庫,或是將檔案傳遞給遠方 WebService 接收 ..... 還有 FileBytes 屬性被標記為 Bindable(true),更可以將 FileUpload 控制項輕鬆搭配資料繫結控制項(例如 FormView)、DataSource 控制項(例如 ObjectDataSource),作資料繫結,當然省了相當多程式碼。 ASP.Net 2.0 之後,建議用 FileUpload。 另外,網路上非常多文章說,HtmlInputFile 與 FileUpload 還有一個差異,就是後者會自動為 form 加上 enctype="multipart/form-data"。可是我印象中以前寫 ASP.Net 1.x 好多時間,從來沒手動幫 form 加這個屬性,HtmlInputFile 也都用得好好的。最近又用 VS2003 測試一下,發現 HtmlInputFile 只要設 runat="server",同樣會自動補上 enctype。不知是不是曾經有這問題,後來被修補了? 如果不設 runat="server",的確就不會加 enctype。(但是這樣一來,它還能幹嘛?) 引用通告此日志的引用通告 URL 是: http://eggttball.spaces.live.com/blog/cns!330312E5514C141B!1646.trak 引用此项的网络日志
|
|
|