网页标签 embed 的路径解释

    技术2022-05-18  11

    我们用过的embed标签 src路径

    解释: 只需理解src为一个url 或 uri, 如果在项目中用到了相对路径,即:在项目根路径开始写路径,而不是全路径,则,网页就可以解析到我们的项目路径下, 如果我们写的是全路径,即格式为: "C:/sldfk/sldkj", 这样,网页访客浏览器中看到的就是这个原始路径,但实际上会定位到访客个人电脑的这个路径,即,如果访客个人电脑中没有这个路径问题就产生了,因为,如果写的是项目的相对路径,解析出来的是服务器的物理IP.即可访问到服务器上的路径,也就是说上面的绝对路径写法实际上是走了file文件uri协议,故直接定位本地文件系统了,而没有走http协议.

         其实完美的解决方案是用流读取写出,这样就避免了src后面的路径问题.即,在src中写一个servlet路径,传入相应的文件名等参数,在后台该servlet中用流把请求的文件协会(inputStream). 当然,如果用的是struts2,就写struts2的action函数url, 在struts.xml文件中配置返回页面为当前页面,例:

     

    页面:

    <embed src="Controller_voice.action?currentFileFullName=<s:property value="fileFullName"/>" autostart=false  height=45/>

     

    action中:

    public InputStream getVoiceFile() throws FileNotFoundException {            return new FileInputStream(this.getCurrentFileFullName());            //return ServletActionContext.getServletContext().getResourceAsStream(this.getCurrentName());     }         public String voice(){         return "voice";     }

     

    Struts.xml中:

                <result name="voice" type="stream">                    <!-- 下载文件类型 -->                    <param name="contentType">audio/wav</param>                    <param name="inputName">inputStream</param>                    <!-- 下载的InputStream流,Struts2自己动对应Action中的getVoiceFile方法,该方法必须返回InputStream 类型 -->                <param name="inputName">voiceFile</param>                <param name="bufferSize">2048</param>            </result>


    最新回复(0)