ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
网站建设 域名注册 网站建设 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg王国 ACG玩家 品牌设计 上海网站建设
求创科技
网站建设
中国互联
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 编程开发 >> .net >> ASP.NET中文件上传下载方法集合

ASP.NET中文件上传下载方法集合 (2)

来源:中国设计秀    作者:    点击:61     加入收藏    发表评论
0
顶一下
 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,0,upFileLength);
 return FileArray;
}

  这个方法返回的就是上传的文件的二进制字节流,这样我们就可以将它保存到数据库了。下面说一下这种形式的下载,也许你会想到这种方式的下载就是新建一个 aspx页面,然后在它的Page_Load()事件里取出二进制字节流,然后再读出来就可以了,其实这种方法是不可

取的,在实际的运用中也许会出现无法打开某站点的错误,我一般采用下面的方法:

  首先,在Web.config中加入:

<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 >0)
   {
    DataRow dr = (DataRow)data.Tables["RX_OA_File"].Rows[0];
    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("http://localhost/pwtest/webform1.aspx");
HttpWebResponse hwr = (HttpWebResponse)hwq.GetResponse();
byte[] bytes = new byte[hwr.ContentLength];
Stream stream = hwr.GetResponseStream();
stream.Read(bytes,0,Convert.ToInt32(hwr.ContentLength));
//HttpContext.Current.Response.BinaryWrite(bytes);

  HttpWebRequest 可以从Internet上读取文件,因此可以很好的解决这个问题。

[1] [2] [3]
2007-08-14 12:07:00    出处:
Google
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口