在ASP.NET中上传下载文件实例代码
using System.IO;
//检查上传文件不为空
if
(File1.PostedFile!=
null
)
{
string
nam = File1.PostedFile.FileName ;
//取得文件名(抱括路径)里最后一个"."的索引
int
i= nam.LastIndexOf(
"."
);
//取得文件扩展名
string
newext =nam.Substring(i);
//这里我自动根据日期和文件大小不同为文件命名,确保文件名不重复
DateTime now = DateTime.Now;
string
newname=now.DayOfYear.ToString()+File1.PostedFile.ContentLength.ToString();
//保存文件到你所要的目录,这里是IIS根目录下的upload目录.你可以改变.
//注意: 我这里用Server.MapPath()取当前文件的绝对目录.在asp.net里""必须用""代替
File1.PostedFile.SaveAs(Server.MapPath(
"upload"
+newname+newext));
this
.HyperLink1.NavigateUrl =
"upload"
+newname+newext;
//得到这个文件的相关属性:文件名,文件类型,文件大小
//fname.Text=File1.PostedFile.FileName;
//fenc.Text=File1.PostedFile.ContentType ;
//fsize.Text=File1.PostedFile.ContentLength.ToString();
}
上传可以用.net里的HTML控件里的File Field的上传控件呀,你拖到窗体上后,你可以右击做为服务器端控件使用,就这样写上你要上传的几句代码就行了,下载直接连接到你要下载的文件就可以下载了把文件上传放到服务器上,直接加超衔接就是下载了.一下是上传文件用到的类:
说明:直接在cs文件里复制粘贴就可以用的.using System;
using System.IO;
using
System.Web.UI.HtmlControls;
namespace
youjian
{
/// <summary>
/// UpFile 的摘要说明。
/// </summary>
public
class
UpFile
{
public
UpFile()
{
}#region 是否允许该扩展名上传IsAllowedExtension
///<summary>
///是否允许该扩展名上传
///</summary>
///<paramname = "hifile">HtmlInputFile控件</param>
///<returns>允许则返回true,否则返回false</returns>
public
bool
IsAllowedExtension(HtmlInputFile hifile)
{
string
strOldFilePath =
""
;
string
strExtension =
""
;
//允许上传的扩展名,可以改成从配置文件中读出
string
[]arrExtension = {
".gif"
,
".jpg"
,
".jpeg"
,
".bmp"
,
".png"
};
if
(hifile.PostedFile.FileName !=
string
.Empty)
{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf(
"."
));
//判断该扩展名是否合法
for
(
int
i = 0;i<arrExtension.Length;i++)
{
if
(strExtension.Equals(arrExtension[i]))
{
return
true
;
}
}
}
return
false
;
}
#endregion #region 判断上传文件大小是否超过最大值IsAllowedLength
/// <summary>
/// 判断上传文件大小是否超过最大值
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <returns>超过最大值返回false,否则返回true.</returns>
public
bool
IsAllowedLength(HtmlInputFile hifile)
{
//允许上传文件大小的最大值,可以保存在xml文件中,单位为KB
int
i = 20;
//如果上传文件的大小超过最大值,返回flase,否则返回true.
if
(hifile.PostedFile.ContentLength > i * 1024)
{
return
false
;
}
return
true
;
}
#endregion
#region 获取一个不重复的文件名GetUniqueString
/// <summary>
/// 获取一个不重复的文件名
/// </summary>
/// <returns></returns>
public
string
GetUniqueString()
{
//得到的文件名形如:20050922101010
return
DateTime.Now.ToString(
"yyyyMMddhhmmss"
);
}
#endregion #region 删除指定文件DeleteFile
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="strAbsolutePath">文件绝对路径</param>
/// <param name="strFileName">文件名</param>
public
void
DeleteFile(
string
strAbsolutePath,
string
strFileName)
{
//判断路径最后有没有/符号,没有则自动加上
if
(strAbsolutePath.LastIndexOf(
"//"
) == strAbsolutePath.Length)
{
//判断要删除的文件是否存在
if
(File.Exists(strAbsolutePath + strFileName))
{
//删除文件
File.Delete(strAbsolutePath + strFileName);
}
}
else
{
if
(File.Exists(strAbsolutePath +
"//"
+ strFileName))
{
File.Delete(strAbsolutePath +
"//"
+ strFileName);
}
}
}
#endregion
#region 上传文件并返回文件名 SaveFile
/// <summary>
/// 上传文件并返回文件名
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用/符号亦可</param>
/// <returns>返回的文件名即上传后的文件名</returns>
public
string
SaveFile(HtmlInputFile hifile,
string
strAbsolutePath)
{
string
strOldFilePath =
""
,strExtension =
""
,strNewFileName =
""
;
//如果上传文件的文件名不为空
if
(hifile.PostedFile.FileName !=
string
.Empty)
{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf(
"."
));
//文件上传后的命名
strNewFileName = GetUniqueString() + strExtension;
//如果路径末尾为/符号,则直接上传文件
if
(strAbsolutePath.LastIndexOf(
"//"
) == strAbsolutePath.Length)
{
hifile.PostedFile.SaveAs(strAbsolutePath + strNewFileName);
}
else
{
hifile.PostedFile.SaveAs(strAbsolutePath +
"//"
+ strNewFileName);
}
}
return
strNewFileName;
}
#endregion
#region 重新上传文件,删除原有文件CoverFile
/// <summary>
/// 重新上传文件,删除原有文件
/// </summary>
/// <param name="ffFile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用/符号亦可</param>
/// <param name="strOldFileName">旧文件名</param>
public
void
CoverFile(HtmlInputFile ffFile,
string
strAbsolutePath,
string
strOldFileName)
{
//获得新文件名
string
strNewFileName = GetUniqueString();
if
(ffFile.PostedFile.FileName !=
string
.Empty)
{
//旧图片不为空时先删除旧图片
if
(strOldFileName !=
string
.Empty)
{
DeleteFile(strAbsolutePath,strOldFileName);
}
SaveFile(ffFile,strAbsolutePath);
}
}
#endregion
C#.net 文件操作:上传 下载 删除 文件列表
1.文件上传
----------
如下要点:
HTML部分:
<
form
id
=
"form1"
runat
=
"server"
method
=
"post"
enctype
=
"multipart/form-data"
>
<
input
id
=
"FileUpLoad"
type
=
"file"
runat
=
"server"
/><
br
/>
后台CS部分 按钮事件
//string strFileFullName = System.IO.Path.GetFileName(this.FileUpLoad.PostedFile.FileName);
//this.FileUpLoad.PostedFile.SaveAs(Server.MapPath("./xmlzip/") + strFileFullName);
2.文件下载
----------
ListBox的SelectedIndexChanged事件 设定相关下载连接
protected
void
lst_DownLoadFileList_SelectedIndexChanged(
object
sender, EventArgs e)
{
try
{
string
strJS =
"window.open('xmlzip/"
;
strJS +=
this
.lst_DownLoadFileList.SelectedItem.Text.Trim();
strJS +=
"'); return false; "
;
this
.imgbtn_DownLoadFile.Attributes.Add(
"onclick"
, strJS);
}
catch
(Exception ex)
{
ex.ToString();
}
}
或者也可以通过 改变Label的Text值 来实现点击后实现文件下载的超级连接
this
.Label1.Text =
"<a href=/"
xmlzip/a.rar/
">a.rar</a>"
3.文件删除
---------
string
strFilePath = Server.MapPath(
"../CountryFlowMgr/xmlzip/"
+
this
.lst_DownLoadFileList.SelectedItem.Text.Trim());
if
(File.Exists(strFilePath))
{
File.Delete(strFilePath);
if
(File.Exists(strFilePath))
{
Response.Write(
"ok"
);
}
else
{
Response.Write(
"ok"
);
}
}
4.得到文件夹下的文件列表
-----------
#region 得到当前可用的文件列表
/// <summary>
/// 得到当前可用的文件列表
/// </summary>
/// <param name="IsAlert">是否需要弹出提示信息</param>
private
void
fn_getCurrFileList(
bool
IsAlert)
{
try
{
//查找xmlzip文件夹下 属于其本身UnitCoding的相关zip文件
string
strXmlZipDirectory = Server.MapPath(
"../xmlzip/"
);
if
(Directory.Exists(strXmlZipDirectory))
{
//DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory);
DirectoryInfo di =
new
DirectoryInfo(strXmlZipDirectory); FileInfo[] FI = di.GetFiles(
"*.zip"
);
//只查.zip文件
if
(FI.Length > 0)
{
lst_DownLoadFileList.Items.Clear();
foreach
(FileInfo tmpFI
in
FI)
{
ListItem tmpItem =
new
ListItem();
tmpItem.Text = tmpFI.Name;
lst_DownLoadFileList.Items.Add(tmpItem);
}
lst_DownLoadFileList.SelectedIndex = 0;
}
else
{
if
(IsAlert)
{
Response.write(
"查无可以下载的文件!"
);
}
}
}
}
catch
(Exception ex)
{
ex.ToString();
}
}
#endregion
以上就是在ASP.NET中上传下载文件实例代码的详细内容
参考文章:http://blog.ncmem.com/wordpress/2023/11/09/%e5%9c%a8asp-net%e4%b8%ad%e4%b8%8a%e4%bc%a0%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6%e5%ae%9e%e4%be%8b%e4%bb%a3%e7%a0%81/
欢迎入群一起讨论