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。(但是這樣一來,它還能幹嘛?)

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://eggttball.spaces.live.com/blog/cns!330312E5514C141B!1646.trak
引用此项的网络日志