网页标签 embed 的路径解释

我们用过的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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值