C# 通用文件上傳類
更新時(shí)間:2009年12月29日 00:10:49 作者:
C# 通用上傳文件類,需要的朋友可以參考下。
1、Upfile.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml"; >
<head runat="server">
<title>上傳文件</title>
<link href="../Manage/Style.Css" type="text/css" rel=Stylesheet />
</head>
<body>
<form id="form1" runat="server">
<div style="left: 0px; clip: rect(0px auto auto 0px); position: absolute; top: 0px">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上傳文件" CssClass="btn2" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
</form>
</body>
</html>
Upfile.aspx.cs
代碼
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Inc_Upfile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Cut By 夢溪苑。
}
protected void Button1_Click(object sender, EventArgs e)
{
AllSheng.upload UpFiles = new AllSheng.upload();
//HttpPostedFile File = FileUpload1.PostedFile;
// AllSheng.UploadObj.PhotoSave("/", FileUpload1);
HttpFileCollection files = HttpContext.Current.Request.Files;
UpFiles.Path = "../UpLoadfiles";
String ReStr= UpFiles.SaveAs(files).ToString();
Label1.Text = ReStr;
UpFiles = null;
}
}
3、類文件:
代碼
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/**//// <summary>
/// Cls_Upfile 的摘要說明
/// </summary>
///
namespace AllSheng
{
public class upload
{
變量#region 變量
System.Web.HttpPostedFile postedFile;
protected string localFileName;//原文件名(含擴(kuò)展名)
protected string localFileExtension;//原擴(kuò)展名
protected long localFileLength;//原文件大小
protected string localFilePath;//原文件路徑
protected string saveFileName;//保存的文件名(含擴(kuò)展名)
protected string saveFileExtension;//保存的擴(kuò)展名
//protected long saveFileLength;//保存的文件大小
protected string saveFilePath;//保存文件的服務(wù)器端的完整路徑
protected string saveFileFolderPath;//保存文件的服務(wù)器端的文件夾路徑
private string path = null;
private string fileType = null;
private int sizes = 0;
#endregion
upload():初始化變量#region upload():初始化變量
/**//// <summary>
/// 初始化變量
/// </summary>
public upload()
{
path = @"uploadimages"; //上傳路徑
fileType = "jpg|gif|bmp|jpeg|png|rar|doc";
sizes = 200; //傳文件的大小,默認(rèn)200KB
}
#endregion
設(shè)置傳入的值:Path/Sizes/FileType#region 設(shè)置傳入的值:Path/Sizes/FileType
/**//// <summary>
/// 設(shè)置上傳路徑,如:uploadimages
/// </summary>
public string Path
{
set
{
path = @"" + value + @"";
}
}
/**//// <summary>
/// 設(shè)置上傳文件大小,單位為KB
/// </summary>
public int Sizes
{
set
{
sizes = value;
}
}
/**//// <summary>
/// 設(shè)置上傳文件的類型,如:jpg|gif|bmp
/// </summary>
public string FileType
{
set
{
fileType = value;
}
}
#endregion
SaveAs()上傳文件#region SaveAs()上傳文件
public string SaveAs(System.Web.HttpFileCollection files)
{
string myReturn = "";
try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
postedFile = files[iFile];
//獲得文件的上傳的路徑
localFilePath = postedFile.FileName;
//判斷上傳文件路徑是否為空
if (localFilePath == null || localFilePath == "")
{
//message("您沒有上傳數(shù)據(jù)呀,是不是搞錯(cuò)了呀!");
//break;
continue;
}
else
{
判斷文件大小#region 判斷文件大小
//獲得上傳文件的大小
localFileLength = postedFile.ContentLength;
//判斷上傳文件大小
if (localFileLength >= sizes * 1024)
{
message("上傳的圖片不能大于" + sizes + "KB");
break;
}
#endregion
文件夾#region 文件夾
//獲取保存文件夾路徑
saveFileFolderPath = getSaveFileFolderPath(path);
#endregion
文件名#region 文件名
//獲得原文件名(含擴(kuò)展名)
localFileName = System.IO.Path.GetFileName(postedFile.FileName);
saveFileName = DateTime.UtcNow.ToString("yyyy" + "MM" + "dd" + "HH" + "mm" + "ss" + "ffffff");//"yyyy"+"MM"+"dd"+"HH"+"mm"+"ss"+"ffffff"
#endregion
擴(kuò)展名#region 擴(kuò)展名
//獲取原文件擴(kuò)展名
localFileExtension = getFileExtension(localFileName);
//如果為真允許上傳,為假則不允許上傳
if (localFileExtension == "")
{
message("目前本系統(tǒng)支持的格式為:" + fileType);
}
//得到保存文件的擴(kuò)展名,可根據(jù)需要更改擴(kuò)展名
saveFileExtension = localFileExtension;
#endregion
//得到保存文件的完整路徑
saveFilePath = saveFileFolderPath + saveFileName + saveFileExtension;
postedFile.SaveAs(saveFilePath);
myReturn = myReturn + ((myReturn == "" || myReturn == null) ? "" : "|") + path.TrimStart(new char[] { '' }) + saveFileName + saveFileExtension;
//以下對文章的內(nèi)容進(jìn)行一些加工
System.Web.HttpContext.Current.Response.Write("<script>parent.Article_Content___Frame.FCK.EditorDocument.body.innerHTML+='<img src=" + saveFileName + saveFileExtension + " "+" border=0 />'</SCRIPT>");
}
}
}
catch
{
//異常
message("出現(xiàn)未知錯(cuò)誤!");
myReturn = null;
}
return myReturn;
}
#endregion
getSaveFileFolderPath( ):獲得保存的文件夾的物理路徑#region getSaveFileFolderPath( ):獲得保存的文件夾的物理路徑
/**//// <summary>
/// 獲得保存的文件夾的物理路徑
/// 返回保存的文件夾的物理路徑,若為null則表示出錯(cuò)
/// </summary>
/// <param name="format">保存的文件夾路徑 或者 格式化方式創(chuàng)建保存文件的文件夾,如按日期"yyyy"+"MM"+"dd":20060511</param>
/// <returns>保存的文件夾的物理路徑,若為null則表示出錯(cuò)</returns>
private string getSaveFileFolderPath(string format)
{
string mySaveFolder = null;
try
{
string folderPath = null;
//以當(dāng)前時(shí)間創(chuàng)建文件夾,
//!!!!!!!!!!!!以后用正則表達(dá)式替換下面的驗(yàn)證語句!!!!!!!!!!!!!!!!!!!
if (format.IndexOf("yyyy") > -1 || format.IndexOf("MM") > -1 || format.IndexOf("dd") > -1 || format.IndexOf("hh") > -1 || format.IndexOf("mm") > -1 || format.IndexOf("ss") > -1 || format.IndexOf("ff") > -1)
{
//以通用標(biāo)準(zhǔn)時(shí)間創(chuàng)建文件夾的名字
folderPath = DateTime.UtcNow.ToString(format);
mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + @"" + folderPath + @"";
}
else
{
mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + format;
}
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(mySaveFolder);
//判斷文件夾否存在,不存在則創(chuàng)建
if (!dir.Exists)
{
dir.Create();
}
}
catch
{
message("獲取保存路徑出錯(cuò)");
}
return mySaveFolder;
}
#endregion
getFileExtension( ):獲取原文件的擴(kuò)展名#region getFileExtension( ):獲取原文件的擴(kuò)展名
/**//// <summary>
/// 獲取原文件的擴(kuò)展名,返回原文件的擴(kuò)展名(localFileExtension),該函數(shù)用到外部變量fileType,即允許的文件擴(kuò)展名.
/// </summary>
/// <param name="myFileName">原文件名</param>
/// <returns>原文件的擴(kuò)展名(localFileExtension);若返回為null,表明文件無后綴名;若返回為"",則表明擴(kuò)展名為非法.</returns>
private string getFileExtension(string myFileName)
{
string myFileExtension = null;
//獲得文件擴(kuò)展名
myFileExtension = System.IO.Path.GetExtension(myFileName);//若為null,表明文件無后綴名;
//分解允許上傳文件的格式
if (myFileExtension != "")
{myFileExtension = myFileExtension.ToLower();//轉(zhuǎn)化為小寫
}
string[] temp = fileType.Split('|');
//設(shè)置上傳的文件是否是允許的格式
bool flag = false;
//判斷上傳的文件是否是允許的格式
foreach (string data in temp)
{
if (("." + data) == myFileExtension)
{
flag = true;
break;
}
}
if (!flag)
{
myFileExtension = "";//不能設(shè)置成null,因?yàn)閚ull表明文件無后綴名;
}
return myFileExtension;
}
#endregion
message( ):彈出消息框#region message( ):彈出消息框
/**//// <summary>
/// 彈出消息框,顯示內(nèi)容(msg),點(diǎn)擊"確定"后頁面跳轉(zhuǎn)到該路徑(url)
/// </summary>
/// <param name="msg">顯示內(nèi)容</param>
/// <param name="url">跳轉(zhuǎn)路徑</param>
private void message(string msg, string url)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');window.location='" + url + "'</script>");
}
/**//// <summary>
/// 彈出消息框,顯示內(nèi)容(msg),無跳轉(zhuǎn)
/// </summary>
/// <param name="msg">顯示內(nèi)容</param>
private void message(string msg)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');</script>");
}
#endregion
}
}
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml"; >
<head runat="server">
<title>上傳文件</title>
<link href="../Manage/Style.Css" type="text/css" rel=Stylesheet />
</head>
<body>
<form id="form1" runat="server">
<div style="left: 0px; clip: rect(0px auto auto 0px); position: absolute; top: 0px">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上傳文件" CssClass="btn2" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
</form>
</body>
</html>
Upfile.aspx.cs
代碼
復(fù)制代碼 代碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Inc_Upfile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Cut By 夢溪苑。
}
protected void Button1_Click(object sender, EventArgs e)
{
AllSheng.upload UpFiles = new AllSheng.upload();
//HttpPostedFile File = FileUpload1.PostedFile;
// AllSheng.UploadObj.PhotoSave("/", FileUpload1);
HttpFileCollection files = HttpContext.Current.Request.Files;
UpFiles.Path = "../UpLoadfiles";
String ReStr= UpFiles.SaveAs(files).ToString();
Label1.Text = ReStr;
UpFiles = null;
}
}
3、類文件:
代碼
復(fù)制代碼 代碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/**//// <summary>
/// Cls_Upfile 的摘要說明
/// </summary>
///
namespace AllSheng
{
public class upload
{
變量#region 變量
System.Web.HttpPostedFile postedFile;
protected string localFileName;//原文件名(含擴(kuò)展名)
protected string localFileExtension;//原擴(kuò)展名
protected long localFileLength;//原文件大小
protected string localFilePath;//原文件路徑
protected string saveFileName;//保存的文件名(含擴(kuò)展名)
protected string saveFileExtension;//保存的擴(kuò)展名
//protected long saveFileLength;//保存的文件大小
protected string saveFilePath;//保存文件的服務(wù)器端的完整路徑
protected string saveFileFolderPath;//保存文件的服務(wù)器端的文件夾路徑
private string path = null;
private string fileType = null;
private int sizes = 0;
#endregion
upload():初始化變量#region upload():初始化變量
/**//// <summary>
/// 初始化變量
/// </summary>
public upload()
{
path = @"uploadimages"; //上傳路徑
fileType = "jpg|gif|bmp|jpeg|png|rar|doc";
sizes = 200; //傳文件的大小,默認(rèn)200KB
}
#endregion
設(shè)置傳入的值:Path/Sizes/FileType#region 設(shè)置傳入的值:Path/Sizes/FileType
/**//// <summary>
/// 設(shè)置上傳路徑,如:uploadimages
/// </summary>
public string Path
{
set
{
path = @"" + value + @"";
}
}
/**//// <summary>
/// 設(shè)置上傳文件大小,單位為KB
/// </summary>
public int Sizes
{
set
{
sizes = value;
}
}
/**//// <summary>
/// 設(shè)置上傳文件的類型,如:jpg|gif|bmp
/// </summary>
public string FileType
{
set
{
fileType = value;
}
}
#endregion
SaveAs()上傳文件#region SaveAs()上傳文件
public string SaveAs(System.Web.HttpFileCollection files)
{
string myReturn = "";
try
{
for (int iFile = 0; iFile < files.Count; iFile++)
{
postedFile = files[iFile];
//獲得文件的上傳的路徑
localFilePath = postedFile.FileName;
//判斷上傳文件路徑是否為空
if (localFilePath == null || localFilePath == "")
{
//message("您沒有上傳數(shù)據(jù)呀,是不是搞錯(cuò)了呀!");
//break;
continue;
}
else
{
判斷文件大小#region 判斷文件大小
//獲得上傳文件的大小
localFileLength = postedFile.ContentLength;
//判斷上傳文件大小
if (localFileLength >= sizes * 1024)
{
message("上傳的圖片不能大于" + sizes + "KB");
break;
}
#endregion
文件夾#region 文件夾
//獲取保存文件夾路徑
saveFileFolderPath = getSaveFileFolderPath(path);
#endregion
文件名#region 文件名
//獲得原文件名(含擴(kuò)展名)
localFileName = System.IO.Path.GetFileName(postedFile.FileName);
saveFileName = DateTime.UtcNow.ToString("yyyy" + "MM" + "dd" + "HH" + "mm" + "ss" + "ffffff");//"yyyy"+"MM"+"dd"+"HH"+"mm"+"ss"+"ffffff"
#endregion
擴(kuò)展名#region 擴(kuò)展名
//獲取原文件擴(kuò)展名
localFileExtension = getFileExtension(localFileName);
//如果為真允許上傳,為假則不允許上傳
if (localFileExtension == "")
{
message("目前本系統(tǒng)支持的格式為:" + fileType);
}
//得到保存文件的擴(kuò)展名,可根據(jù)需要更改擴(kuò)展名
saveFileExtension = localFileExtension;
#endregion
//得到保存文件的完整路徑
saveFilePath = saveFileFolderPath + saveFileName + saveFileExtension;
postedFile.SaveAs(saveFilePath);
myReturn = myReturn + ((myReturn == "" || myReturn == null) ? "" : "|") + path.TrimStart(new char[] { '' }) + saveFileName + saveFileExtension;
//以下對文章的內(nèi)容進(jìn)行一些加工
System.Web.HttpContext.Current.Response.Write("<script>parent.Article_Content___Frame.FCK.EditorDocument.body.innerHTML+='<img src=" + saveFileName + saveFileExtension + " "+" border=0 />'</SCRIPT>");
}
}
}
catch
{
//異常
message("出現(xiàn)未知錯(cuò)誤!");
myReturn = null;
}
return myReturn;
}
#endregion
getSaveFileFolderPath( ):獲得保存的文件夾的物理路徑#region getSaveFileFolderPath( ):獲得保存的文件夾的物理路徑
/**//// <summary>
/// 獲得保存的文件夾的物理路徑
/// 返回保存的文件夾的物理路徑,若為null則表示出錯(cuò)
/// </summary>
/// <param name="format">保存的文件夾路徑 或者 格式化方式創(chuàng)建保存文件的文件夾,如按日期"yyyy"+"MM"+"dd":20060511</param>
/// <returns>保存的文件夾的物理路徑,若為null則表示出錯(cuò)</returns>
private string getSaveFileFolderPath(string format)
{
string mySaveFolder = null;
try
{
string folderPath = null;
//以當(dāng)前時(shí)間創(chuàng)建文件夾,
//!!!!!!!!!!!!以后用正則表達(dá)式替換下面的驗(yàn)證語句!!!!!!!!!!!!!!!!!!!
if (format.IndexOf("yyyy") > -1 || format.IndexOf("MM") > -1 || format.IndexOf("dd") > -1 || format.IndexOf("hh") > -1 || format.IndexOf("mm") > -1 || format.IndexOf("ss") > -1 || format.IndexOf("ff") > -1)
{
//以通用標(biāo)準(zhǔn)時(shí)間創(chuàng)建文件夾的名字
folderPath = DateTime.UtcNow.ToString(format);
mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + @"" + folderPath + @"";
}
else
{
mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + format;
}
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(mySaveFolder);
//判斷文件夾否存在,不存在則創(chuàng)建
if (!dir.Exists)
{
dir.Create();
}
}
catch
{
message("獲取保存路徑出錯(cuò)");
}
return mySaveFolder;
}
#endregion
getFileExtension( ):獲取原文件的擴(kuò)展名#region getFileExtension( ):獲取原文件的擴(kuò)展名
/**//// <summary>
/// 獲取原文件的擴(kuò)展名,返回原文件的擴(kuò)展名(localFileExtension),該函數(shù)用到外部變量fileType,即允許的文件擴(kuò)展名.
/// </summary>
/// <param name="myFileName">原文件名</param>
/// <returns>原文件的擴(kuò)展名(localFileExtension);若返回為null,表明文件無后綴名;若返回為"",則表明擴(kuò)展名為非法.</returns>
private string getFileExtension(string myFileName)
{
string myFileExtension = null;
//獲得文件擴(kuò)展名
myFileExtension = System.IO.Path.GetExtension(myFileName);//若為null,表明文件無后綴名;
//分解允許上傳文件的格式
if (myFileExtension != "")
{myFileExtension = myFileExtension.ToLower();//轉(zhuǎn)化為小寫
}
string[] temp = fileType.Split('|');
//設(shè)置上傳的文件是否是允許的格式
bool flag = false;
//判斷上傳的文件是否是允許的格式
foreach (string data in temp)
{
if (("." + data) == myFileExtension)
{
flag = true;
break;
}
}
if (!flag)
{
myFileExtension = "";//不能設(shè)置成null,因?yàn)閚ull表明文件無后綴名;
}
return myFileExtension;
}
#endregion
message( ):彈出消息框#region message( ):彈出消息框
/**//// <summary>
/// 彈出消息框,顯示內(nèi)容(msg),點(diǎn)擊"確定"后頁面跳轉(zhuǎn)到該路徑(url)
/// </summary>
/// <param name="msg">顯示內(nèi)容</param>
/// <param name="url">跳轉(zhuǎn)路徑</param>
private void message(string msg, string url)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');window.location='" + url + "'</script>");
}
/**//// <summary>
/// 彈出消息框,顯示內(nèi)容(msg),無跳轉(zhuǎn)
/// </summary>
/// <param name="msg">顯示內(nèi)容</param>
private void message(string msg)
{
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');</script>");
}
#endregion
}
}
相關(guān)文章
Asp.Mvc?2.0用戶客戶端驗(yàn)證實(shí)例講解(3)
這篇文章主要介紹了Asp.Mvc?2.0實(shí)現(xiàn)客戶端驗(yàn)證功能,本文使用jquery.validate插件進(jìn)行驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08ASP.NET Web應(yīng)用程序的安全解決方案淺析
ASP.NET Web應(yīng)用程序的安全解決方案淺析,讓大家在以后的開發(fā)中,多注意一下安全問題。2009-11-11Visual Studio 2017 15.5 正式發(fā)布!性能再提升
Visual Studio 2017 15.5 正式發(fā)布!性能再提升,時(shí)發(fā)布的還有 Visual Studio for Mac 7.3,亮點(diǎn)如下2017-12-12一個(gè)可以讓.net程序在非WIN平臺上運(yùn)行的軟件Mono
一個(gè)可以讓.net程序在非WIN平臺上運(yùn)行的軟件Mono...2007-03-03把a(bǔ)spx頁面?zhèn)窝b成靜態(tài)html格式的實(shí)現(xiàn)代碼
把a(bǔ)spx頁面?zhèn)窝b成靜態(tài)html格式的實(shí)現(xiàn)代碼,主要是利于搜索引擎的收錄。2011-10-10ASP.NET開源導(dǎo)入導(dǎo)出庫Magicodes.IE完成Csv導(dǎo)入導(dǎo)出的方法
這篇文章主要介紹了ASP.NET開源導(dǎo)入導(dǎo)出庫Magicodes.IE完成Csv導(dǎo)入導(dǎo)出的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06詳解.Net Core + Angular2 環(huán)境搭建
這篇文章主要介紹了詳解.Net Core + Angular2 環(huán)境搭建,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12