在表单中上传附件一直都是常用的业务功能,所以特意定制了这样一个上传按钮,这样在表单中使用附件上传功能就非常简单了。
1、在页面定义一个div,给定一个id;
- <div class="layui-row layui-col-space1 task-row">
- #@colStart("附件",12)
- <div id="test"></div>
- #@colEnd()
- </div>
- <div class="layui-row layui-col-space1 task-row">
- #set(req=true)
- #@colStart("名称",12)
- #@getSelectBySql('query_org','org_name','请选择')
- #@colEnd()
- </div>
2、在js中调用#@formUploadButton(objectId,divId)函数即可,objectId是关联附件用的标识,用于读取上传的附件,objectId为空则默认当前登录用户id。objectId建议使用实体类的id,并且在添加的功能的时候提前创建这个objectId。
- #define js()
- <script type="text/javascript">
- #@formUploadButton('test','test')
- </script>
- #end
3、如果想在一个表单使用多个上传按钮,重复调用即可:
- <div class="layui-row layui-col-space1 task-row">
- #@colStart("序号",12)
- <input type="number" name="order_no" value="1" class="layui-input"/>
- #@colEnd()
- </div>
- <div class="layui-row layui-col-space1 task-row">
- #@colStart("附件",12)
- <div id="test"></div>
- #@colEnd()
- </div>
- <div class="layui-row layui-col-space1 task-row">
- #@colStart("附件",12)
- <div id="test2"></div>
- #@colEnd()
- </div>
- #define js()
- <script type="text/javascript">
- //第一个参数是objectId,实际开发的时候,建议和实体类的主键关联
- //#@formUploadButton(sysUser.id+'test','test')
- //#@formUploadButton(sysUser.id+'test2','test')
- #@formUploadButton('test','test')
- #@formUploadButton('test2','test2')
- </script>
- #end
4、开启自动上传:在调用前#setLocal(autoUpload=true)
- #define js()
- <script type="text/javascript">
- //开启自动上传功能
- #setLocal(autoUpload=true)
- #@formUploadButton('test','test')
- </script>
- #end
5、隐藏历史文件的删除按钮:#setLocal(showDelBtn=false)
- #define js()
- <script type="text/javascript">
- //开启自动上传功能autoUpload=true、隐藏历史文件删除按钮showDelBtn=false
- #setLocal(autoUpload=true,showDelBtn=false)
- #@formUploadButton('test','test')
- </script>
- #end
6、看效果图:
a、未选择文件:
b、选择了2个文件,其中一个附件已经上传,还有一个未上传:
c、点击按钮后面的(1/2),可以查询附件列表信息:
d、多个上传按钮:
e、自动上传:
f、上传按钮可同时显示历史文件,并且可以下载、删除、预览(图片),新上传的附件可删除
7、获取表单上传的附件:
a、前端:通用的附件列表接口:/portal/getFileList/{objectId} ,objectId就是#@formUploadButton(objectId,divId)的第一个参数值,如果缺省objectId值,就是当前登录用户编号
b、后端:java获取附件相关信息,在controller处可以直接调用getFileUploadedByObjectId(String objectId)、getFileUploadListByObjectId(String objectId)方法
- //1、获取单个附件信息(最新上传的附件)
- FileUploaded fileUploaded=getFileUploadedByObjectId(objectId);
- String fileName=fileUploaded.getFileName();
- String savePath=fileUploaded.getSavePath();
- String url=fileUploaded.getUrl();
- //TODO 业务处理附件关系
- //2、获取多个附件信息(所有关联的附件)
- List<FileUploaded> fileUploadList=getFileUploadListByObjectId(objectId)
c、BaseController也提供了四个方法,便于业务的controller调用: