好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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;

}

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

原文链接:http://blog.csdn.net/pan_junbiao/article/details/7185382

dy("nrwz");

查看更多关于C#实现文件上传与下载功能实例的详细内容...

  阅读:43次