C#实现文件上传与下载功能实例

最近学习了 C#实现文件上传下载,现在分享给大家。

1、C#文件上传

创建MyUpload.htm页面,用于测试

<form name="form1" method="post" action="UploadFile.aspx" id="form1"

enctype="multipart/form-data">

<input type="file" id="txtFile" name="picfile" /></br>

<input type="submit" value="上传" />

</form>

创建UploadFile.aspx文件,在UploadFile.aspx.cs键入如下代码:

Random rnd = new Random(); //产生随机数

private string _directory = @"/File/UploadFile"; //目录

protected void Page_Load(object sender, EventArgs e)

{

try

{

if (RequestFilesCount > 0)

{

//判断文件大小

int length = RequestFiles[0]ContentLength;

if (length > 1048576)

{

ResponseWrite("文件大于1M,不能上传");

return;

}

string type = RequestFiles[0]ContentType;

string fileExt = PathGetExtension(RequestFiles[0]FileName)ToLower();

//只能上传图片,过滤不可上传的文件类型

string fileFilt = "gif|jpg|php|jsp|jpeg|png|";

if (fileFiltIndexOf(fileExt) <= -1)

{

ResponseWrite("对不起!请上传图片!!");

return;

}

else

{

string fileName = ServerMapPath(_directory) + "\\" + DateTimeNowToString("yyyyMMddHHmmssfff") + rndNext(10, 99)ToString() + fileExt;

RequestFiles[0]SaveAs(fileName);

ResponseWrite("上传成功!");

}

}

}

catch

{

throw new Exception();

}

}

2 、C#文件下载

创建DownloadFile.aspx,在DownloadFile.aspx.cs键入如下方法:

/// <summary>

/// C#文件下载

/// </summary>

/// <param name="filename"></param>

public void MyDownload(string filename)

{

string path = ServerMapPath("/File/"+filename);

if(!FileExists(path))

{

ResponseWrite("对不起!文件不存在!!");

return;

}

SystemIOFileInfo file = new SystemIOFileInfo(path);

string fileFilt="asp|aspx|php|jsp|ascx|config|asa|"; //不可下载的文件,务必要过滤干净

string fileName = fileName;

string fileExt = fileNameSubstring(filenameLastIndexOf(""))Trim()ToLower();

if(fileFiltIndexOf(fileExt)!=-1)

{

ResponseWrite("对不起!该类文件禁止下载!!");

}

else

{

ResponseClear();

ResponseAddHeader("Content-Disposition", "attachment; filename=" + HttpUtilityUrlEncode(fileName));

ResponseAddHeader("Content-Length", fileLengthToString());

ResponseContentType = GetContentType(HttpUtilityUrlEncode(fileExt));

ResponseWriteFile(fileFullName);

ResponseEnd();

}

}

/// <summary>

/// 获取下载类型

/// </summary>

/// <param name="fileExt"></param>

/// <returns></returns>

public string GetContentType(string fileExt)

{

string ContentType;

switch (fileExt)

{

case "asf":

ContentType = "video/x-ms-asf"; break;

case "avi":

ContentType = "video/avi"; break;

case "doc":

ContentType = "application/msword"; break;

case "zip":

ContentType = "application/zip"; break;

case "xls":

ContentType = "application/vndms-excel"; break;

case "gif":

ContentType = "image/gif"; break;

case "jpg":

ContentType = "image/jpeg"; break;

case "jpeg":

ContentType = "image/jpeg"; break;

case "wav":

ContentType = "audio/wav"; break;

case "mp3":

ContentType = "audio/mpeg3"; break;

case "mpg":

ContentType = "video/mpeg"; break;

case "mepg":

ContentType = "video/mpeg"; break;

case "rtf":

ContentType = "application/rtf"; break;

case "html":

ContentType = "text/html"; break;

case "htm":

ContentType = "text/html"; break;

case "txt":

ContentType = "text/plain"; break;

default:

ContentType = "application/octet-stream";

break;

}

return ContentType;

}

*如何获取现有文件的ContentType属性

/// <summary>

/// 获取现有文件的ContentType属性

/// </summary>

/// <param name="filename"></param>

/// <returns></returns>

public string GetFileContentType(string filename)

{

string[] array = filenameSplit('');

string result = stringEmpty;

string suffix = "" + array[arrayLength - 1];

MicrosoftWinRegistryKey rg = MicrosoftWinRegistryClassesRootOpenSubKey(suffix);

object obj = rgGetValue("Content Type");

result = obj != null ? objToString() : stringEmpty;

rgClose();

return result;

}

以上是 C#实现文件上传与下载功能实例 的全部内容, 来源链接: utcz.com/z/344889.html

回到顶部