天天看点

Nancy之文件上传与下载

Nancy之文件上传与下载

Nancy中的文件上传与下载

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

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

直接进正题吧!

通过nuget安装相应的packages

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

具体如下:

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

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

IRootPathProvider pathProvider  

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

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

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

Post["/"]   上传文件的

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

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

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

Show.cshtml

UpLoad.cshtml

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

下面来看看效果:

Nancy之文件上传与下载
Nancy之文件上传与下载
Nancy之文件上传与下载

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

上传:

相信之前大家在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

Nancy之文件上传与下载

如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!

作者:Catcher Wong ( 黄文清 )

来源:http://catcher1994.cnblogs.com/

声明:

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果您发现博客中出现了错误,或者有更好的建议、想法,请及时与我联系!!如果想找我私下交流,可以私信或者加我微信。