ASP.NET實(shí)現(xiàn)文件上傳功能
本文實(shí)例為大家分享了ASP.NET實(shí)現(xiàn)文件上傳功能的具體代碼,供大家參考,具體內(nèi)容如下
1、搭建網(wǎng)站結(jié)構(gòu)
2、編寫網(wǎng)頁文件
創(chuàng)建一個(gè)Web窗體UploadFile和UpFile文件夾,UploadFile包含UploadFile.aspx和UploadFile.aspx.cs兩個(gè)文件,源代碼如下:
[UploadFile.aspx]
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadFile.aspx.cs" Inherits="WebForrmDemo.UploadFile" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ? ? <title></title> </head> <body> ? ? <form id="form1" runat="server"> ? ? ? ? <div> ? ? ? ? ? ? 請選擇要上傳的文件:<asp:FileUpload ID="fileup" runat="server" /> ? ? ? ? ? ? <asp:Button ID="btnUpload" runat="server" Text="開始上傳" ?OnClick="btnUpload_Click"/> ? ? ? ? ? ? <br /> ? ? ? ? ? ? <asp:Literal ID="lblMsg" runat="server"></asp:Literal> ? ? ? ? </div> ? ? </form> </body> </html>
[UploadFile.aspx.cs]
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration; namespace WebForrmDemo { ? ? public partial class UploadFile : System.Web.UI.Page ? ? { ? ? ? ? protected void Page_Load(object sender, EventArgs e) ? ? ? ? { ? ? ? ? } ? ? ? ? protected void btnUpload_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? //【1】判斷文件是否存在 ? ? ? ? ? ? if (fileup.HasFile) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //【2】獲取文件的大小,判斷是否符合設(shè)置要求 ? ? ? ? ? ? ? ? //1mb=1024kb ? ? ? ? ? ? ? ? //1kb=1024byte ? ? ? ? ? ? ? ? double fileLength=fileup.FileContent.Length / (1024.0 * 1024.0); ? ? ? ? ? ? ? ? //獲取配置文件中上傳文件大小的限制 ? ? ? ? ? ? ? ? double limitLength = Convert.ToDouble(ConfigurationManager.AppSettings["fileMaxLength"])/1024.0; ? ? ? ? ? ? ? ? if (fileLength>limitLength) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? lblMsg.Text = $"上傳文件不能超過{limitLength}MB"; ? ? ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? //【3】獲取文件名,判斷文件擴(kuò)展名是否符合要求 ? ? ? ? ? ? ? ? string fileName = fileup.FileName; ? ? ? ? ? ? ? ? //判斷文件是否是exe文件,則不能上傳 ? ? ? ? ? ? ? ? if (fileName.Substring(fileName.LastIndexOf(".")).ToLower()==".exe") ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? lblMsg.Text = "不能上傳應(yīng)用程序"; ? ? ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? //【4】修改文件名稱 ? ? ? ? ? ? ? ? //一般情況下,上傳的文件服務(wù)器中保存時(shí)不會(huì)采取原文件名,因?yàn)榭蛻舳擞脩羰欠浅}嫶蟮?,所以要保證每個(gè)客戶端上傳的文件不能被覆蓋 ? ? ? ? ? ? ? ? fileName = DateTime.Now.ToString("yyyyMMddhhmmssms") + "_" + fileName; ? ? ? ? ? ? ? ? //【5】獲取服務(wù)器中存儲(chǔ)文件的路徑 ? ? ? ? ? ? ? ? //"~"代表應(yīng)用程序的根目錄,從服務(wù)器的根目錄尋找 ? ? ? ? ? ? ? ? string path = Server.MapPath("~/UPFile"); ? ? ? ? ? ? ? ? //【6】上傳文件 ? ? ? ? ? ? ? ? try ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? fileup.SaveAs(path+"/"+fileName); ? ? ? ? ? ? ? ? ? ? lblMsg.Text = "文件上傳成功!"; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? catch (Exception ex) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? lblMsg.Text = $"文件上傳失?。簕ex.Message}"; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } }
3.在Web.config加入下面代碼:
<appSettings> ? ? <!--配置上傳文件最大字節(jié)數(shù)為30mb:單位kb--> ? ? <add key="fileMaxLength" value="30720"/> ? </appSettings> ? <system.web> ? ? <!--httpRuntime中可以設(shè)置請求的最大字節(jié)數(shù)--> ? ? <httpRuntime targetFramework="4.6.1" maxRequestLength="40960"/> </system.web>
4、運(yùn)行測試
(1) 點(diǎn)擊選擇文件
(2) 確定好文件
(3)點(diǎn)擊上傳,顯示文件上傳成功。
(4)在程序的目錄下面可以看到剛才上傳的文件
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net基于HashTable實(shí)現(xiàn)購物車的方法
這篇文章主要介紹了asp.net基于HashTable實(shí)現(xiàn)購物車的方法,涉及asp.net中HashTable結(jié)合session實(shí)現(xiàn)購物車功能的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12asp.net自定義控件回發(fā)數(shù)據(jù)實(shí)現(xiàn)方案與代碼
在實(shí)現(xiàn)asp.net的自定義控件中,若要實(shí)現(xiàn)數(shù)據(jù)的回發(fā)或者post數(shù)據(jù),那自義控件必須實(shí)現(xiàn)IPostBackDataHandler接口, 在該接口中有兩個(gè)方法一個(gè)是LoadPostData,另一個(gè)是RaisePostDataChangedEvent,需要的朋友可以了解下2012-12-12asp.net實(shí)現(xiàn)XML文件讀取數(shù)據(jù)綁定到DropDownList的方法
這篇文章主要介紹了asp.net實(shí)現(xiàn)XML文件讀取數(shù)據(jù)綁定到DropDownList的方法,結(jié)合實(shí)例形式分析了asp.net針對xml文件操作及DropDownList控件的使用技巧,需要的朋友可以參考下2017-02-02asp.net下一個(gè)賬號不允許多個(gè)用戶同時(shí)在線,重復(fù)登陸的代碼
asp.net下一個(gè)賬號不允許多個(gè)用戶同時(shí)在線,重復(fù)登陸的代碼,需要的朋友可以參考下。2010-10-10asp.net運(yùn)算符之邏輯運(yùn)算符以及其他運(yùn)算符介紹與實(shí)例
在.net中運(yùn)算符分類很多種類型,包括有我們常用的boolean型運(yùn)算符,通用的運(yùn)行符有 ==、!=、<、>、<=、>=、binary +、binary -、^、&、|、~、++、-- 和 sizeof()2013-08-08ASP.NET輸出PNG圖片時(shí)出現(xiàn)GDI+一般性錯(cuò)誤的解決方法
偶原來的用ASP.NET生成驗(yàn)證碼圖片時(shí)用的是JPG格式,今天想把它改成PNG格式的,結(jié)果就出現(xiàn)GDI+一般性錯(cuò)誤,查了N久資料,才發(fā)現(xiàn)解決的辦法,對分享此解決辦法的網(wǎng)友深表感謝2009-01-01.Net Core中使用ref和Span<T>提高程序性能的實(shí)現(xiàn)代碼
這篇文章主要介紹了.Net Core中使用ref和Span<T>提高程序性能的簡單實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-05-05ASP.NET MVC3 實(shí)現(xiàn)全站重定向的簡單方法
這篇文章主要介紹了ASP.NET MVC3 實(shí)現(xiàn)全站重定向的簡單方法,有需要的朋友可以參考一下2014-01-01