Asp.net中關於上傳檔案的各項基本操作
在常見的B/S模式下企業級架構中上傳檔案是一個常見業務操作.在.NET 1.1版本是隻有對應的客戶端HTML版本的Input<Type="File">,在.NET2.0版本新增進來了伺服器端的FileUpload控制元件.
其實考慮在設計這個控制元件時為了保證.NET安全機制.預設設定是檔案上傳的大小是2M. 當然可以通過修改系統的Web.Config配置檔案達到4M. 其實相對而言Fileupload是一把雙刃劍.使用時揚長避短是很重要的.
開發者應該瞭解的是,之所以預設的檔案大小上限為4MB,並不是因為當時的設計人員靈光一現,而是為了避免潛在DOS攻擊危險。若是攻擊者提交了一個或多個大檔案,往往會讓伺服器不堪重負。若是使用者上傳的檔案大於4MB,將會得到“Maximum request length exceeded.”異常資訊. 當然這些就涉及到Asp.net平臺下大檔案上傳的問題作為下一節討論並實現. 本章主要實現的是利用Asp.net中FileUpload控制的一些基本操作.
最近裝上VS2010 Beta2版本. NET FrameWork 4.0.(關係不大)試用一下.以下的專案編碼都在該環境下執行.
(A):簡單檔案上傳操作 頁面程式碼:
- --前臺一個上傳控制元件 接著是一個上傳按鈕
- <asp:FileUpload ID="FileUpload5" runat="server" Width="475px"></asp:FileUpload>
- <asp:Button ID="TestFileType" runat="server" Text="上傳檔案-判斷檔案型別"
- onclick="TestFileType_Click" OnClientClick="CheckFileType()" ></asp:Button>
後臺Button時間操作程式碼:
- //向伺服器上傳檔案-BasicOperatorDemo(基本操作演示) -最簡單操作
- //Author:chenkai Date:2009年11月10日14:22:36
- protected void bt_upload_Click(object sender, EventArgs e)
- {
- try {
- if (FileUpload1.PostedFile.FileName == "")
- {
- this.lb_info.Text = "請選擇您要上傳的檔案!";
- }
- else
- {
- string filepath = FileUpload1.PostedFile.FileName.ToString();
- string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
- string serverpath = HttpContext.Current.Server.MapPath("Images/") + filename;
- //儲存到伺服器上 判斷檔案目錄是否存在
- if (File.Exists(serverpath))
- {
- FileUpload1.SaveAs(serverpath);
- this.lb_info.Text = "檔案上傳成功!";
- }
- else
- {
- //建立儲存目錄
- File.Create(serverpath);
- }
- }
- }
- catch (Exception se)
- {
- this.lb_info.Text = "上傳過程發生錯誤!錯誤原因:" + se.ToString();
- }
- }
再次逐步的提高要求: A:限制客戶端上傳檔案的檔案型別. 只能上傳制定的.JPG/.Jpeg/.chm 3種型別的檔案. 客戶端驗證模式:
- <Script language="JavaScript" Type="JS/Text">
- //定義一個客戶端JS函式來判斷上傳檔案的型別 在Button onClintClick事件呼叫
- function CheckFileType() {
- //盡然可以直接呼叫伺服器端控制元件
- var str = document.getElementById("FileUpload5").value;
- alert(str);
- var pos = str.lastIndexOf(".");
- var lastname = str.substring(pos,str.length)
- if (lastname.toLowerCase()!=".jpg" && lastname.toLowerCase()!=".gif")
- {
- alert("您上傳的檔案型別為"+lastname+",圖片必須為.jpg,.gif型別");
- return false;
- }
- else
- {
- return true;
- }
- }
- </Script>
上傳制定檔案型別伺服器端驗證模式:
- /// <summary>
- /// 檢測真正的上傳檔案型別資料
- /// Author:chenkai Date:2009年11月11日10:44:26
- /// </summary>
- public bool CheckClintFileType(FileUpload getfile)
- {
- //獲得資料
- System.IO.FileStream getstream=new FileStream(getfile.FileName,FileMode.Open,FileAccess.Read);
- System.IO.BinaryReader getreader = new BinaryReader(getstream);
- string fileclass = string.Empty;
- byte buffer;
- try
- {
- //讀取的檔案流轉化成二進位制檔案
- buffer = getreader.ReadByte();
- fileclass = buffer.ToString();
- //再次疊加
本文轉自chenkaiunion 51CTO部落格,原文連結:http://blog.51cto.com/chenkai/765300
相關文章
- 關於node實現檔案上傳
- Asp.net core 2.0 +SPA檔案上傳注意事項ASP.NET
- 關於jQuery在Asp.Net Mvc 框架下Ajax檔案上傳的實現jQueryASP.NETMVC框架
- .net 操作檔案上傳
- Java關於檔案上傳的一個例子Java
- 關於檔案上傳的問題smartUpload
- 檔案上傳之三基於flash的檔案上傳
- ASP.NET Core 檔案上傳ASP.NET
- ASP.NET中檔案上傳下載方法集合ASP.NET
- jqm檔案上傳,上傳圖片,jqm的表單操作,jqm的ajax的使用,jqm檔案操作大全,檔案操作demo
- 關於laravel上傳的檔案驗證或者的表示?Laravel
- 用ASP.NET上傳大檔案ASP.NET
- 實現ASP.NET中FileUpload多檔案上傳ASP.NET
- 在ASP.NET中實現多檔案上傳 (轉)ASP.NET
- Asp.Net 上傳大檔案專題(1)--概述:上傳大檔案的難點ASP.NET
- Laravel 中的檔案上傳Laravel
- ASP.NET Core檔案上傳IFormFile於Request.Body的羈絆ASP.NETORM
- 關於檔案上傳下載的編碼問題
- 關於JAVA中順序IO的基本操作Java
- 檔案各種上傳,離不開的表單
- Java 中的 GraphQL 上傳檔案Java
- asp.net 解決檔案上傳大小的限制ASP.NET
- Django檔案上傳 -- 適用於單一小檔案上傳Django
- 【詳細】關於Android上傳檔案的幾種方式Android
- ASP.NET:MVC中檔案上傳與地址變化處理ASP.NETMVC
- php大檔案上傳注意事項PHP
- SpringMvc 檔案上傳注意事項SpringMVC
- Asp.Net音訊檔案上傳和播放ASP.NET音訊
- asp.net 上傳大檔案大小控制方案ASP.NET
- ASP.NET上傳檔案對檔案型別的高階判斷ASP.NET型別
- php檔案上傳之多檔案上傳PHP
- 關於ASP.NET/C#中對Cookie的操作ASP.NETC#Cookie
- 關於檔案上傳那些可能不怎麼對的姿勢
- 關於檔案上傳下載我所知道的全部內容
- Git基本命令 -- 基本工作流程 + 檔案相關操作Git
- 28 檔案基本操作
- 學習ASP.NET Core Blazor程式設計系列十八——檔案上傳(中)ASP.NETBlazor程式設計
- C語言關於檔案操作的命令C語言