附件上传
<EF:EFRegion id="upload" title="文本附件">
<%-- <EF:EFUpload ename="textAttachment" docTag="lawAndSecurity" path="lawAndSecurity"/>--%>
<EF:EFUpload ename="attach1" docTag="ceshi" path="ceshi"/>
<EF:EFInput ename="attachNameAndIds" cname="附件名称和id" type="hidden"></EF:EFInput>
<div id="fjId" class="row" style="margin:10px 10px 0px 10px">
</div>
<EF:EFInput ename="upButton" cname="上传按钮" type="button" id="submit" value=" 预览 "></EF:EFInput>
</EF:EFRegion>
1、我们在EDCC03页面设置好本地附件上传的地址;(其他正式项目中需要在project文件中对ftp地址进行设置);
2、上传成功之后可在相应路径下看到对应文件;
文件预览
此次的文件预览是建立在上传的基础之上的,故预览的也是本地的文件(后期预览ftp线上文件需要对其进行相应配置)
1、引入kkfileview需要用到相关js;
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"></script>
2、在相应的按钮上设置好对应的预览方法;
$("#upButton").on("click",function (e) {
{
console.log("执行了upButton方法")
// var url = 'file:///F:/ftpserver/测试用途.png'; //要预览文件的访问地址
// window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(url)));
preViewFile('8181823679a836660179a836c1bd0002');
}
});
注意:这里为了测试方便,我把docId写死了,正式环境中应该自动去获取docId
3、写对应的获取附件的service方法;
//获取附件
public EiInfo queryDocFile(EiInfo inInfo) {
try {
String docId = inInfo.get("docId").toString();
PlatFileUploadManager fileUpLoadManager = (PlatFileUploadManager) PlatApplicationContext.getBean("fileUpLoadManager");
Map fileMap = fileUpLoadManager.getDocById(docId);//根据文件ID获取文件信息
String attachmentName = fileMap.get("realPath").toString().replace(ROOT_PATH, VIR_PATH);
String filename = fileMap.get("chgName").toString();
String filename1 = URLEncoder.encode(filename, "UTF-8");//转为UTF-8编码
callUrl(PRE_PATH + "addTask?url=" + attachmentName + filename1);
fileMap.put("docUrl", attachmentName);//文件存放路径
fileMap.put("docName", filename1);//文件名
fileMap.put("preUrl", PRE_PATH);//预览路径--页面地址栏中的访问ip地址
inInfo.set("docInfo", fileMap);
inInfo.setStatus(EiConstant.STATUS_SUCCESS);
} catch (Exception ex) {
inInfo.setStatus(EiConstant.STATUS_FAILURE);
inInfo.setDetailMsg(ex.getMessage());
}
return inInfo;
}
4、添加相应js预览方法调service方法;
function preViewFile(docId) {
console.log("执行了preViewFile方法")
var eiInfo = new EiInfo();
eiInfo.set("docId",docId);
//平台表的附件编号
EiCommunicator.send("BI01", "queryDocFile", eiInfo, {
onSuccess: function (rs) {
if(rs.get("docInfo")!=null){
var docInfo=rs.get("docInfo");
var url1=docInfo.docUrl+docInfo.docName;
// var url=docInfo.preUrl+"onlinePreview?url="+docInfo.docUrl+encodeURIComponent(docInfo.docName);
var url=docInfo.preUrl+"onlinePreview?url="+encodeURIComponent(Base64.encode(url1));
var loadLabel="在线预览";
var openPara = "toolbar=no,location=yes,directories=no,status=yes,menubar=yes," +
"resizable=yes,scrollbars=yes,";
if (!$.support.leadingWhitespace) {
openedWindow = window.open(url, loadLabel, openPara);
} else {
openedWindow = window.open(url, loadLabel);
}
}
}
});
}
注意
这里的话我们需要在application.properties文件中对本地地址以及kkfileview本地访问地址进行一个修改;
#本地预览:
#磁盘附件地址
filePath = C:\\docRootDir\\archives\\
#静态资源访问地址(这里我们配置的是本地的物理地址)
#resVirPath=http://10.25.79.58:9999/
#resVirPath=ftp://192.168.137.1:21
resVirPath=file:///F:/ftpserver
#预览服务地址
#previewUrl=http://10.25.79.12:8012/
previewUrl=http://127.0.0.1:8012/