在作项目的时候,忽然接收到一个需求,是可以对其余用户上传的文件进行预览,而后再下载,搜索了一些方法,最终选择了下面的实现,由于只是须要看,不进行而外的操做,因此方法都是比较简单的,后续有其余需求在更新。jquery
使用了MicroSoft官方的office预览模式,该模式的实现很是简单,就是在已有的文件地址前面加入 https://view.officeapps.live.com/op/view.aspx?src=
这一串路由,等因而经过前面的路由封装了你的文件路由:浏览器
// method let preUrl = 'https://view.officeapps.live.com/op/view.aspx?src='+ selfUrl + (token) // render {preType === 'office' && ( <iframe title='预览' src={preUrl} width='860px' height='600px' ></iframe> )}
ps:这个服务不支持ip地址的url,须要域名urlapp
效果图:ide
一开始准备使用pdf.js或者是jquery.media来实现,后来考虑到不须要额外操做,只是预览,后台更改了那边的服务,直接在网页渲染,如今的浏览器基本都可以渲染pdf文件,方法同上:函数
// method let preUrl = (host) + selfUrl + (token) // render {preType === 'pdf' && ( <iframe title='预览' src={preUrl} width='860px' height='600px' ></iframe> )}
效果图:url
对于音频和视频文件,使用了 Html 5
的 <video>
标签,定义一个 video
并传入 url
:spa
// method let preUrl = (host) + selfUrl + (token) // render {(preType === 'video' || preType === 'audio') && ( <video height='500' width='860' controls> <source src={preUrl} /> </video> )}
效果图:3d
就用 <img>
标签就好啦,这还要说什么,顶多就是可能有多张图片加一个上一张下一张的断定函数。code