![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuETej5WYO91bvwFO5cjN4czLcRTO5Ejclh2Y0F2YvwVbvN2Xzd2bsJmbj9CXt92YuM3ZvxmYuNmLzV2Zh1Wavw1LcpDc0RHaiojIsJye.png)
Nancy中的文件上传与下载
由于前段时间一直在找工作,找到工作后又比较忙,又加班又通宵的赶项目,所以博客有段时间没有更新了。
今天稍微空闲一点,碰巧前几天看到有园友问我Nancy中下载文件的问题,然后就趁着休息的时间写下了这篇博客。
直接进正题吧!
通过nuget安装相应的packages
用于存放我们的“控制器”和视图(这一步不是必须的喔!)
具体如下:
这里我是新建了一个HomeModule.cs
需要注意的是,要在构造函数中添加一点东西
IRootPathProvider pathProvider
下面贴上HomeModule.cs的完整代码
下面简单说一下这些是用来干嘛的:
Get["/"] 显示upload这个页面
Post["/"] 上传文件的
Get["/down/{name}"] 下载文件,{name}是参数 文件名
Get["/show"] 显示可下载的文件
上传文件和下载文件的具体细节会在看完演示后细说。
Show.cshtml
UpLoad.cshtml
视图就比较简单,没什么样式。就是简单的列出文件名称和上传文件的表单
下面来看看效果:
就这样完成了简单的上传和下载功能,也是挺简单的。
上传:
相信之前大家在asp.net中进行上传时,下面这个httppostedfilebase类,肯定是经常用的
https://msdn.microsoft.com/en-us/library/system.web.httppostedfilebase(v=vs.110).aspx
但是这个是基于system.web的,而Nancy是不依赖于system.web的!!!那么Nancy是怎么处理这个的呢
Nancy有自己的一套东西来处理这个,可以看看这个类
https://github.com/NancyFx/Nancy/blob/master/src/Nancy/HttpFile.cs
也可以看看httppostfilebase这个类
http://referencesource.microsoft.com/#System.Web/Abstractions/HttpPostedFileBase.cs
像处理这些问题,Nancy都有自己的实现,用起来跟平常的用法有点区别,这个是需要注意的!!
还有一个要注意的是路径的问题,这个问题可以参见
https://github.com/NancyFx/Nancy/wiki/The-root-path
下载:
在asp.net mvc中,下载我们用的比较多的是 fileresult
https://msdn.microsoft.com/en-us/library/system.web.mvc.fileresult(v=vs.118).aspx
其实,Nancy也提供了类似的方法
用法就是 response.asfile()
可以参见下面的
https://github.com/NancyFx/Nancy/blob/master/src/Nancy/FormatterExtensions.cs
https://github.com/NancyFx/Nancy/blob/master/src/Nancy/Responses/GenericFileResponse.cs
如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
作者:Catcher Wong ( 黄文清 )
来源:http://catcher1994.cnblogs.com/
声明:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果您发现博客中出现了错误,或者有更好的建议、想法,请及时与我联系!!如果想找我私下交流,可以私信或者加我微信。