知识大全 ASP.NET中文件上传下载方法集合

Posted 文件

篇首语:水往下流,人争上游。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET中文件上传下载方法集合相关的知识,希望对你有一定的参考价值。

ASP.NET中文件上传下载方法集合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  文件的上传下载是我们在实际项目开发过程中经常需要用到的技术 这里给出几种常见的方法 本文主要内容包括    如何解决文件上传大小的限制    以文件形式保存到服务器    转换成二进制字节流保存到数据库以及下载方法    上传Internet上的资源   第一部分   首先我们来说一下如何解决中的文件上传大小限制的问题 我们知道在默认情况下ASP NET的文件上传大小限制为 M 一般情况下 我们可以采用更改Web Config文件来自定义最大文件大小 如下    这样上传文件的最大值就变成了 M 但这样并不能让我们无限的扩大 MaxRequestLength的值 因为ASP NET会将全部文件载入内存后 再加以处理 解决的方法是利用隐含的 HttpWorkerRequest 用它的GetPreloadedEntityBody和ReadEntityBody方法从IIS为ASP NET 建立的pipe里分块读取数据 实现方法如下 IServiceProvidERProvider=(IServiceProvider)HttpContext Current; HttpWorkerRequesr=(HttpWorkerRequest)provider GetService(typeof(HttpWorkerRequest)); byte[]bs=wr GetPreloadedEntityBody(); if(!wr IsEntireEntityBodyIsPreloaded())  intn= ;  byte[]bs =newbyte[n];  while(wr ReadEntityBody(bs n)> )          这样就可以解决了大文件的上传问题了   第二部分   下面我们来介绍如何以文件形式将客户端的一个文件上传到服务器并返回上传文件的一些基本信息   首先我们定义一个类 用来存储上传的文件的信息(返回时需要) public class FileUpLoad  public FileUpLoad()    /**////

 /// 上传文件名称  ///  public string FileName     get       return fileName;      set       fileName = value;       private string fileName;  /**////  /// 上传文件路径  ///  public string FilePath     get       return filepath;      set       filepath = value;       private string filepath;  /**////  /// 文件扩展名  ///  public string FileExtension     get       return fileExtension;      set       fileExtension = value;       private string fileExtension;   另外我们还可以在配置文件中限制上传文件的格式(App Config)

  <?XML version= encoding= gb ?> <Application> <FileUpLoad><Format> jpg| gif| png| bmp </FileUpLoad> </Application>  这样我们就可以开始写我们的上传文件的方法了 如下 public FileUpLoad UpLoadFile(HtmlInputFile InputFile string filePath string myfileName bool isRandom)  FileUpLoad fp = new FileUpLoad();  string fileName fileExtension;  string saveName;  //  //建立上传对象  //  HttpPostedFile postedFile = InputFile PostedFile;  fileName = System IO Path GetFileName(postedFile FileName);  fileExtension = System IO Path GetExtension(fileName);  //  //根据类型确定文件格式  //  AppConfig app = new AppConfig();  string format = app GetPath( FileUpLoad/Format );  //  //如果格式都不符合则返回  //  if(format IndexOf(fileExtension)== )     throw new ApplicationException( 上传数据格式不合法 );    //  //根据日期和随机数生成随机的文件名  //  if(myfileName != string Empty)     fileName = myfileName;    if(isRandom)     Random objRand = new Random();   System DateTime date = DateTime Now;   //生成随机文件名   saveName = date Year ToString() + date Month ToString() + date Day ToString() + date Hour ToString() + date Minute ToString() + date Second ToString() + Convert ToString(objRand Next( )* + );   fileName = saveName + fileExtension;    string phyPath = HttpContext Current Request MapPath(filePath);  //判断路径是否存在 若不存在则创建路径  DirectoryInfo upDir = new DirectoryInfo(phyPath);  if(!upDir Exists)     upDir Create();    //  //保存文件  //  try     postedFile SaveAs(phyPath + fileName);   fp FilePath = filePath + fileName;   fp FileExtension = fileExtension;   fp FileName = fileName;    catch     throw new ApplicationException( 上传失败! );    //返回上传文件的信息  return fp;   然后我们在上传文件的时候就可以调用这个方法了 将返回的文件信息保存到数据库中 至于下载 就直接打开那个路径就OK了   第三部分   这里我们主要说一下如何以二进制的形式上传文件以及下载 首先说上传 方法如下 public byte[] UpLoadFile(HtmlInputFile f_IFile)  //获取由客户端指定的上传文件的访问  HttpPostedFile upFile=f_IFile PostedFile;  //得到上传文件的长度  int upFileLength=upFile ContentLength;  //得到上传文件的客户端MIME类型  string contentType = upFile ContentType;  byte[] FileArray=new Byte[upFileLength];  Stream fileStream=upFile InputStream;  fileStream Read(FileArray upFileLength);  return FileArray;   这个方法返回的就是上传的文件的二进制字节流 这样我们就可以将它保存到数据库了 下面说一下这种形式的下载 也许你会想到这种方式的下载就是新建一个 aspx页面 然后在它的Page_Load()事件里取出二进制字节流 然后再读出来就可以了 其实这种方法是不可取的 在实际的运用中也许会出现无法打开某站点的错误 我一般采用下面的方法   首先 在nfig中加入 <add verb= * path= openfile aspx type= RuixinOA Web BaseClass OpenFile RuixinOA Web />  这表示我打开openfile aspx这个页面时 系统就会自动转到执行RuixinOA Web BaseClass OpenFile 这个类里的方法 具体实现如下 using System; using System Data; using System Web; using System IO; using Ruixin WorkFlowDB; using RXSuite Base; using RXSuite Component; using RuixinOA BusinessFacade; namespace RuixinOA Web BaseClass  /**////

 /// NetUFile 的摘要说明  ///  public class OpenFile : IHttpHandler     public void ProcessRequest(HttpContext context)       //从数据库中取出要下载的文件信息    RuixinOA BusinessFacade RX_OA_FileManager os = new RX_OA_FileManager();    EntityData data = os GetFileDetail(id);    if(data != null && data Tables[ RX_OA_File ] Rows Count > )         DataRow dr = (DataRow)data Tables[ RX_OA_File ] Rows[ ];     context Response Buffer = true;     context Response Clear();     context Response ContentType = dr[ CContentType ] ToString();     context Response AddHeader( Content Disposition attachment;filename= + HttpUtility UrlEncode(dr[ CTitle ] ToString()));     context Response BinaryWrite((Byte[])dr[ CContent ]);     context Response Flush();     context Response End();          public bool IsReusable         get return true;        执行上面的方法后 系统会提示用户选择直接打开还是下载 这一部分我们就说到这里   第四部分   这一部分主要说如何上传一个Internet上的资源到服务器   首先需要引用 System Net 这个命名空间 然后操作如下 HttpWebRequest hwq = (HttpWebRequest)WebRequest Create( x ); HttpWebResponse hwr = (HttpWebResponse)hwq GetResponse(); byte[] bytes = new byte[hwr ContentLength]; Stream stream = hwr GetResponseStream(); stream Read(bytes Convert ToInt (hwr ContentLength)); //HttpContext Current Response BinaryWrite(bytes);   HttpWebRequest 可以从Internet上读取文件 因此可以很好的解决这个问题   第五部分 总结  今天简单的介绍了几种文件上传与下载的方法 都是在实际的项目开发中经常需要用到的 可能还有不完善的地方 希望大家可以互相交流一下项目开发中的经验 cha138/Article/program/net/201311/12325

相关参考

知识大全 在ASP.NET中如何进行文件上传?

在ASP.NET中如何进行文件上传?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!上传文件的步骤:

知识大全 ASP.NET中上传文件到数据库

ASP.NET中上传文件到数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一介绍  为什么

知识大全 Asp.NET大文件上传组件---提取文件内容

Asp.NET大文件上传组件---提取文件内容  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为

知识大全 asp.net下载文件

  SystemIOFileInfofile=newSystemIOFileInfo(pstrFilePath);  if(fileExists)    ResponseClear();  Respo

知识大全 ASP.NET下文件批量下载应用

ASP.NET下文件批量下载应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  场景描述  在B

知识大全 ASP.NET 从服务器下载文件

ASP.NET从服务器下载文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  stringfil

知识大全 ASP.NET文件下载函数使用浅析

ASP.NET文件下载函数使用浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET文

知识大全 Asp.NET大文件上传开发总结(二)

Asp.NET大文件上传开发总结(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了提供文

知识大全 Asp.NET大文件上传开发总结(一)

Asp.NET大文件上传开发总结(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以前开发过

知识大全 ASP.NET带进度条多文件上传

ASP.NET带进度条多文件上传  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  )解压jquer