本人在实现第三方文件存储时,为实现Web网络的上传和下载 的实现费了一些时间,然后总结到的一些问题: 如有思路狭隘之处还望指正!
文件上传时:
实现方式 为:
客户端=》第三方=》服务器(优点:从客户到存储服务器 相比 客户端=》服务器=》第三方 上传效率更高。)
但是 通过Web 实现的时候 默认一般实现方式从浏览器 =》服务器=》第三方存储。
如果想实现直接从浏览器到第三方存储 暂时实现为利用javaScript跨域上传到第三方存储服务器(这些第三方肯定提供支持)
上传方式代码后续会加上: 目前只是打通了API的大部分通道!
文件下载:
代码如下,做了简要下载。之后再深入解析
1 /// <summary> 2 /// 文件下载 3 /// </summary> 4 /// <param name="filename">要下载的文件名称</param> 5 /// <returns></returns> 6 public ActionResult DownFiles(string filename) 7 { 8 ///要下载的文件 9 string tempfilename = filename == null ? filenamekey : filename; 10 string key = filenamekey; 11 ///得到网络上的文件路径如:http://baidu.com/123.avi 12 string downurl = VideoService.MakeGetToken(key); 13 ///利用webClient抓取到此地址并且以流的方式接收到! 14 WebClient wc = new WebClient(); 15 Stream downstream= wc.OpenRead(new Uri(downurl)); 16 string urlfilename = Url.Encode(tempfilename); 17 if (Request.Browser.Browser.Contains("Firefox")) 18 { 19 urlfilename = tempfilename; 20 } 21 ///响应到Web上 22 return File(downstream, "application/octet-stream", urlfilename); 23 24 }
此方法可以实现网络抓取文件方式!
如有更好方式,欢迎交流!