1.链接中添加一个文件类型参数,方便用户识别
在遍历的js方法中添加
//获取文件类型
var index=fi.fileName.lastIndexOf(".");
var fname=fi.fileName.substring(index+1,fi.fileName.length);
拼接的链接添加上参数
fileRow = fileRow+ "<button onclick='copyDownloadBoard(" + '"'
+ window.location.protocol + "//" + window.location.host
+ "/homeController/downloadFile.do?type="+fname+"&fileId="
+ fi.fileId+ '"'
+ ")' class='btn btn-link btn-xs'>
<span class='glyphicon glyphicon-copyright-mark'></span> 复制链接</button>";
后端生成excel表格时,遍历文件对象,在文件链接属性那里也要加上type参数
//获取文件类型
int index = node.getFileName().lastIndexOf(".");
String type=node.getFileName().substring(index+1, node.getFileName().length());
//链接中添加一个type参数
row.createCell(1).setCellValue("http://" + request.getServerName() + ":"
+ request.getServerPort()
+ "/homeController/downloadFile.do?type="
+ type + "&fileId=" + node.getFileId());
2.输出文档EXCEL,如未选中文件,保持目前状态,导出全部。 如有选中文件,则只导出选中的文档属性。
首先 原本的a标签肯定不行了(get请求头长度有限),其次ajax方法我试过貌似也不行,最后网上找了个方式,创建一个不可见表单,post方式,带上文件id,提交上去,提交完成再删除表单.
以上方法来自:https://blog.youkuaiyun.com/ll666634/article/details/79018044
感谢文档系统原作者已经写好的接口方法,让我能获取选中的文件id
// 获取输出文档
function getdocExcel(){
// 获取选中文件id,这个idArr是一个json字符串
var idArr=getCheckedFilesAndFolders().filesId;
// 不为空的情况下,表示有选中的文件,输出指定文档对象的excel表格,模拟一个form表单,用完删除
if(idArr.length>2){
var form=$("<form>");// 定义一个form表单
form.attr("style","display:none");
form.attr("target","");
form.attr("method","post");
form.attr("action","/homeController/getdocExcel.ajax");
var idArrObj = JSON.parse(idArr);// 转换为json对象
$("body").append(form);
for(var i=0;i<idArrObj.length;i++){
// 取json中的值
var input1=$("<input>");
input1.attr("type","hidden");
input1.attr("name","idArr");
input1.attr("value",idArrObj[i]);
// 将表单放置在web中
form.append(input1);
}
form.submit();// 表单提交
form.remove();
}else{
window.location.href="/homeController/getdocExcel.ajax";
}
后台也要进行判断
@Override
public List<Node> getAllFiles(HttpServletRequest request) {
String[] idArr = request.getParameterValues("idArr");
if (idArr != null) {
return fm.queryByIds(idArr);
} else {
return fm.queryAll();
}
}
mybatis传入数组进行查询
<select id="queryByIds" resultMap="BaseResultMap">
SELECT * FROM FILE WHERE file_id in
<foreach collection="array" open="(" separator="," close=")"
item="fileId">
#{fileId,jdbcType=VARCHAR}
</foreach>
</select>
3.上传文件界面增加复选,默认选中,上传EXCEL、WORD、PPT时,自动转化为PDF。 即上传完毕之后,生成两个文件,一个本文件,一个PDF格式。 当文件重新上传覆盖时,生成的PDF也会覆盖原PDF,链接不变。
开发中
后续:这个需求不开发了,无论怎么转pdf都会有问题.