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

  • 相关阅读:
    Oracle 调试存储过程
    页面加载完毕后调用js方法进行布局操控 已实验
    C# webserver实现短信发送(移动)
    作业历史记录
    VS控件全部丢失处理
    visual studio 安装SVN
    svn服务器迁移
    VS2008配置SVN
    VS2008 控件全部丢失解决
    定时收缩数据库日志
  • 原文地址:https://www.cnblogs.com/mbailing/p/URI.html
Copyright © 2011-2022 走看看