零、前言

由于前段时间一直在找工作,找到工作后又比较忙,又加班又通宵的赶项目,所以博客有段时间没有更新了。

今天稍微空闲一点,碰巧前几天看到有园友问我Nancy中下载文件的问题,然后就趁着休息的时间写下了这篇博客。

直接进正题吧!

一、新建一个空的asp.net应用程序

通过nuget安装相应的packages

二、添加Modules和Views文件夹

用于存放我们的“控制器”和视图(这一步不是必须的喔!)

三、新建CustomRootPathProvider.cs

具体如下:

1 public classCustomRootPathProvider : IRootPathProvider2 {3 public stringGetRootPath()4 {5 return AppDomain.CurrentDomain.GetData(".appPath").ToString();6 }7 }

四、编写Bootstrapper.cs

具体如下:

1 public classBootstrapper : DefaultNancyBootstrapper2 {3 protected overrideIRootPathProvider RootPathProvider4 {5 get

6 {7 return newCustomRootPathProvider();8 }9 }10 }

五、编写Module

这里我是新建了一个HomeModule.cs

需要注意的是,要在构造函数中添加一点东西

IRootPathProvider pathProvider

下面贴上HomeModule.cs的完整代码

1 usingNancy;2 usingSystem.Collections.Generic;3 usingSystem.IO;4

5 namespaceNancyUpLoadAndDownloadDemo.Modules6 {7 public classHomeModule : NancyModule8 {9 public HomeModule(IRootPathProvider pathProvider) : base("/")10 {11 var uploadDirectory = Path.Combine(pathProvider.GetRootPath(), "Content", "uploads");12

13 Get["/"] = _ =>

14 {15 return View["UpLoad"];16 };17

18 Post["/"] = _ =>

19 {20

21 if (!Directory.Exists(uploadDirectory))22 {23 Directory.CreateDirectory(uploadDirectory);24 }25

26 foreach (var file inRequest.Files)27 {28 var filename =Path.Combine(uploadDirectory, file.Name);29 using (FileStream fileStream = newFileStream(filename, FileMode.Create))30 {31 file.Value.CopyTo(fileStream);32 }33 }34 return Response.AsRedirect("/show") ;35 };36

37 Get["/down/{name}"] = _ =>

38 {39 string fileName =_.name;40 var relatePath = @"Content\uploads\"+fileName;41 returnResponse.AsFile(relatePath);42 };43

44 Get["/show"] = _ =>

45 {46 var folder = newDirectoryInfo(uploadDirectory);47 IList files = new List();48 foreach (var file infolder.GetFiles())49 {50 files.Add(file.Name);51 }52 return View["Show", files];53 };54 }55 }56 }

下面简单说一下这些是用来干嘛的:

Get["/"]   显示upload这个页面

Post["/"]   上传文件的

Get["/down/{name}"]   下载文件,{name}是参数 文件名

Get["/show"]  显示可下载的文件

上传文件和下载文件的具体细节会在看完演示后细说。

六、建立视图

Show.cshtml

1 @{2 Layout = null;3 }4

5

6

7

8

9

10

11

12

13

14 @foreach (var item in Model)15 {16

17

18 @item19

20

21 }22

23

24

25

UpLoad.cshtml

1 @{2 Layout = null;3 }4

5

6

7

8

9

10

UpLoad

11

12

13

这是上传文件的演示

14


15

16

17

18 请选择要上传的文件

19

20

21

22

23

24

25

26

27

视图就比较简单,没什么样式。就是简单的列出文件名称和上传文件的表单

下面来看看效果:

就这样完成了简单的上传和下载功能,也是挺简单的。

七、上传与下载的细节

上传:

相信之前大家在asp.net中进行上传时,下面这个httppostedfilebase类,肯定是经常用的

但是这个是基于system.web的,而Nancy是不依赖于system.web的!!!那么Nancy是怎么处理这个的呢

Nancy有自己的一套东西来处理这个,可以看看这个类

也可以看看httppostfilebase这个类

像处理这些问题,Nancy都有自己的实现,用起来跟平常的用法有点区别,这个是需要注意的!!

还有一个要注意的是路径的问题,这个问题可以参见

下载:

在asp.net mvc中,下载我们用的比较多的是 fileresult

其实,Nancy也提供了类似的方法

用法就是 response.asfile()

可以参见下面的

nft文件传输_Nancy之文件上传与下载相关推荐

  1. 大文件传输解决方案:分片上传 / 下载限速

    前言 不少项目中会遇到上传下载视频.更新包.应用程序等文件,此类文件的共同点就是十分巨大,我在项目中遇到过 4G 左右的文件同时 100 多台机器下载,此时如果用 post 上传和下载想一下都不可能, ...

  2. [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1

    转自:http://blog.csdn.net/soarheaven/archive/2008/12/08/3474152.aspx 最近项目需要对FTP服务器进行操作,现把实现总结如下: 打算分2篇 ...

  3. Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1...

    相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...

  4. xshell上传本地文件命令_linux学习 XShell上传、下载本地文件到linux服务器

    (一)通过命令行的方式 1.linux服务器端设置 在linux主机上,安装上传下载工具包rz及sz; 如果不知道你要安装包的具体名称,可以使用yum provides */name 进行查找系统自带 ...

  5. EasyExcel实现文件读取、导出、上传、下载操作

    一.EasyExcel简介 ​     Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度 ...

  6. python第三方库文件传输_python3 post方式上传文件。

    import requests url = 'http://www.test.com/doFile.php' #url = 'http://www.test.com/doPost.php' #file ...

  7. java ssh 服务器文件传输_java使用SFTP上传文件到资源服务器

    本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: package cn.test.util; ...

  8. java的sftp文件传输_java使用SFTP上传文件到资源服务器方法详解

    java使用SFTP上传文件到资源服务器 本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下 首先得创建连接sftp服务器的公共类MySftp.java: p ...

  9. java csv文件tozip后损坏_java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决...

    情景描述: 1.将本地数据备份成zip文件: 2.将备份的zip文件通过sftp上传到文件服务器: 3.将文件服务器上的zip文件下载到运行服务器: 4.将下载的zip文件解压到本地(文件大小超过50 ...

最新文章

  1. Frog Traveler 最短路,bfs剪枝,打印路径
  2. 一个全栈式的应用集成平台,打破“信息孤岛”
  3. sql语句优化总结 mysql_MySQL-SQL优化总结
  4. 深入理解javascript原型链
  5. PHP 服务器变量 $_SERVER(转)
  6. V-Play入门手册3-如何编写高效的代码?
  7. imreadraw的注册
  8. openai-gpt_GPT-3是“人类”吗?
  9. android 模拟器 超时,Appcelerator Studio超时等待Android模拟器启动
  10. apple pencil二代值不值得买?iPad电容笔测评
  11. 数据结构 严薇敏 单链表(无头结点)的实现(增 删 改 查)及其使用方法详解
  12. 【资源】公开的电子书 合集 (计算机相关、多高清、pdf)
  13. Ubuntu 22.4网易云音乐启动失败处理方法
  14. linux 卸载nexus,Linux下安装maven和nexus
  15. 权限和归属——基本权限和特殊权限
  16. 最简单的分压和低频滤波电路
  17. 程序员的自我修养------勘误表
  18. 以26个英文字母开头的动物名字
  19. BQ25504芯片解析
  20. 海信变频空调室外机工作异常分析与检修案例

热门文章

  1. How to Use File Choosers
  2. linux内存手动释放
  3. mysql privileges
  4. mybatis DATE_FORMAT 格式化时间输出
  5. (一) 开天辟地入门篇(mvc)
  6. 分分钟搞定阿里云私有Docke镜像仓库的搭建
  7. 华为s5700-SI交换机常用命令
  8. 【Python】ix,loc,iloc的区别
  9. service docker start后docker stop/waiting的解决方法
  10. Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案