• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于ASP.Net的导入导出的(2)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Com.urp.command.FileFrameWork2

昨天做到了UploadFileFrame,基本上上算是完成了上传的功能,今天继续做完下载的部分。Google上搜一下,关于asp.net下载的文章不在少数,所以也没有必要讨论怎么做了。在JSF中,下载是通过修改Responseheader实现的,想想,ASP.net应该也能通过这种方法来做吧,果然找到了相关的文章。在博客园上就有,地址:http://www.cnblogs.com/Meyer/archive/2004/04/21/6977.aspx,而且人家是04年就写了,看看自己,原来还只是菜鸟一只:)

Java的代码:

HttpServletResponse response = (HttpServletResponse)getFacesContext().getExternalContext().getResponse();

response.reset();

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "attachment; filename=" + downloadFile.getFileAPIName() );

response.setContentLength(baos.size());

sos=response.getOutputStream();

baos.writeTo(sos);

sos.flush();

 

C#的代码:

_response.Clear();

     _response.ContentType = _fileAPI.ContentType;

     _response.AddHeader("Content-Disposition", "attachment; filename=" + _fileAPI.FileName);

     _response.WriteFile(_fileAPI.Path);

     _response.Flush();

_response.End();

发现,java.Net真是惊人的相似。

注意点1

原来写的时候,这些代码是在controller层的,现在决定放进DownloadFileFram里,真正做到只需要调用一句execute就完成任务了:),但是要注意,需要传一个HttpContext.Current.Response进来。而且发现昨天的设计有点问题。在ExcelFile类的构造函数中传了一个fileType进去,其实完全没有必要,ExcelFile类肯定是对Excel文件操作的,文件类型自然也是定下来的了。

注意点2

上传文件的时IFileAPI是通过HttpPostedFileContentType来构造的,但下载文件的时候是通过FileInfo.Extension来构造的。所以又重新写了一个DownloadAPIFactory,用于在下载文件是构造IFileAPI,并且在IFileAPI增加了ContentType属性,在至于为什么不用简单工厂,是因为想到以后可能构造的时候需要去读xml的文件信息,通过xml来配置上传,下载的临时目录。为了让用户可以选择配置的方法,也许要用抽象Factory作为参数的,所以到时再写一个ConfingFactory也说不定,不知道考虑的是否正确。

注意点3

IFileAPI类中保存了FileType,ContentType这些和具体的文件类型有关的属性,LocalFile类中有一个和具体文件类型无关的Path属性。文件的简单的写入和读出都和文件类型无关,都在LocalFile中实现。所以还应该再有一个类实现IFileAPI,用来处理当文件类型不能识别时的上传下载。

外观层的类图现在修改如下:

 

    FileType包的类图修改如下:


    下载过程的序列图如下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解发布时间:2022-07-10
下一篇:
ASP.NETCore1.0基础之诊断发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap