出现不支持 URI 格式问题的解决方案。

不支持 URI 格式的错误小解:

 

描述:在程序执行中抛出 "不支持 URI 格式" 的异常 ,常常由于文件流通过给定地址读文件时引起的。

        错误的关键就在于你传入的地址是否符合格式。

 

       地址1:http://Localhost/bm0001/jerry.doc

       地址2:D:/user/bm0001/jerry.doc

 

       下载文件时我们常常为了灵活,会配制一个站点,或者是虚拟目录,然后专门为资源服务。

       下载处理时就会有两种选择:

       (1)、一是通过直接挂接资源路径,如<a href="http://www.neworiental.org/userfiles/bm0001/jerry.doc%22%3EjerryDocument%3Ca>,即链接地址为  站点域名+资源路径,比如域名:(http://neworiental.org/)+资源路径(/userfile/bm0001/jerry.doc)

              由于http://neworiental.org/ 为站点,在下载时它会自己映射成一个物理地址 (如) D:/

              然后找到文件后将文件整体读到服务器内存中,然后再传给客户端。

 

              这种方式的优势是编程简单、使用方便,但是无法对文件下载的过程进行监控,以及无法做到很好的防盗。

 

      (2)、二是通过Asp.net 中的 FileStream 类在程序中分段装载文件,FileStream 类在实例化的时候,需要的文件路径是物理路径,即D:/userfil/bm0001/jerry.doc,所以在实例化的时候,如果传入了方式一中的地址(即链接地址为  站点域名+资源路径)的化,程序就会报出 "不支持 URI 格式" 的异常。

 

             这种块装载下载的方式,由于没有把资源路径直接暴露,所以可以很好的做的防盗。而且分块装载可以很好的解决内存过度占用的问题。同时可以很好的跟踪资源的下载情况,可以做到续传等等操作。

 

处理方法:

 

             FileStream 实例化时要传入的路径应该为物理路径  如(D:/)   面不要传虚拟路径:如(http://)类型的。

 

转载于:https://www.cnblogs.com/mbailing/archive/2010/10/26/URI.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值