出现不支持 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://)类型的。

 

posted @ 2010-10-26 17:00  jerry-Tom  阅读(18740)  评论(2编辑  收藏  举报