zoukankan      html  css  js  c++  java
  • 出现不支持 URI 格式问题的解决方案。 jerry

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

  • 相关阅读:
    crontab使用
    python 学习 第一课
    php调用阿里大鱼 接口curl
    thinkphp 动态 级联
    nginx重启
    linux查看 文件夹大小
    mysql convert
    mysql 数据库导入 导出,解决 导入 错误问题
    .net 更新数据 ado.net parameter
    PHP的超全局变量$_SERVER
  • 原文地址:https://www.cnblogs.com/mbailing/p/URI.html
Copyright © 2011-2022 走看看