首页 > 编程 > C# > 正文

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

2020-01-24 00:54:58
字体:
来源:转载
供稿:网友

最近学习了 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; }  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表