常见问题:目前附件上传只支持文档或者图片在线预览,视频或者音频类文件只能直接下载,如果对视频有要求的用户,可以考虑定制功能。我这边用平台搭建的方式来简单实现一个视频附件预览的功能,Demo性能或兼容问题未测试。
第一步:创建两张表单,一张为上传视频的表单,另一种表单为视频播放表单。
第二步:添加附件,设置自定义格式为"mp4",设置最多上传一个文件,建议文件大小在100M左右,如果需要兼容其他的视频格式,可以考虑使用FFmpeg来转格式,统一转换到MP4格式。
第三步:获取上传的视频名称- //获取上传的视频名称
- (function(){
- var name="";
- var doc=getCurrentDocument();
- var jsonText = doc.getItemValueAsString("视频文件上传"); //附件上传控件名称
- if(jsonText!=""){
- println("文件json格式"+jsonText);
- var jsonArray = new Packages.org.json.JSONArray(jsonText);
- for(var ii=0;ii<jsonArray.length();ii++){
- var jsonObject = jsonArray.getJSONObject(ii);
- name+= jsonObject.getString("name");
- }
- }
-
- return name;
- })();
复制代码 第四步:获取上传的视频链接- //获取上传的视频链接
- (function(){
- var path="";
- var doc=getCurrentDocument();
- var jsonText = doc.getItemValueAsString("视频文件上传");
- if(jsonText!=""){
- println("文件json格式"+jsonText);
- var jsonArray = new Packages.org.json.JSONArray(jsonText);
- for(var ii=0;ii<jsonArray.length();ii++){
- var jsonObject = jsonArray.getJSONObject(ii);
- path+= jsonObject.getString("path");
- var request = $WEB.getParamsTable().getHttpRequest();
- println("request==="+request);
- var url="http://" + request.getServerName()+":" + request.getServerPort() + request.getContextPath();
- path=url+path;
- println("pathsss-------->"+path);
- }
- }
- return path;
- })();
复制代码 第五步:获取上传的视频大小- //获取上传的视频大小
- (function(){
- var doc=getCurrentDocument();
- var name=doc.getItemValueAsString("视频文件名称");
- println("name-------->"+name);
- if(name!=""){
- var sql="SELECT '"+getDomainid()+"' as DOMAINID, filesize as item_size FROM t_upload WHERE NAME='"+name+"'";
- println("sql-------->"+sql);
- var query =queryBySQL(sql);
- var rtn="";
- if(query!=null){
- var iter =query.iterator();
- if(iter != null && iter.hasNext()){
- doc = iter.next();
- rtn = round(doc.getItemValueAsDouble("size")/1024,1);
- println("rtn---->"+rtn);
- if(rtn>="1024"){
- rtn=round((rtn/1024),1)+"M";
- }else{
- rtn=round(rtn,0)+"K";
- }
- }
- }
- }
- return rtn;
- })();
复制代码 第六步://获取对应的参数然后通过弹出层来播放视频并将参数传到弹出层。- //获取对应的参数然后通过弹出层来播放视频并将参数传到弹出层。
- (function(){
- var name=encodeURI(getItemValueAsString("视频文件名称"));
- println("name-------->"+name);
- var size=encodeURI(getItemValueAsString("视频文件大小"));
- println("size-------->"+size);
- var fileurl=encodeURI(getItemValueAsString("视频文件链接"));
- println("fileurl-------->"+fileurl);
- var url='http://localhost/obpm/portal/dynaform/document/newWithPermission.action?_formid=11e9-a6e1-2cb1c12e-99d6-81bf65f40277&_isJump=1&application=11e9-39aa-88923f98-bfb2-7fd049d81e23&_resourceid=11e9-a6e2-f7dd8406-99d6-81bf65f40277&name='+name+'&size='+size+'&fileurl='+fileurl+'';
- println("url---------->"+url);
- var js = "OBPM.dialog.show({opener:window.parent,title:'"+name+"',url:'"+url+"',width:1280,height:680,close:function(){window.location.reload()}})";
- var btn="<a onclick="+js+">打开视频</a>";
- return btn;
- })();
复制代码 第七步:弹出层获取参数并赋值到Video标签进行播放视频- //弹出层获取参数并赋值到Video标签进行播放视频
- (function(){
- var fileurl=decodeURI(getParameter("fileurl"));
- println("fileurl-------->"+fileurl);
- var video="<video autoplay='autoplay' width='100%' controls='controls' loop='loop' muted='muted'>";
- video+="<source src='"+fileurl+"' type='video/mp4'>";
- video+="</video>";
- return video;
- })();
复制代码 效果展示:
|