优化下载文件

dep_wangsr
RuoYi 6 years ago committed by Limy
parent 77f33bde08
commit e628e2bb9d

@ -1,10 +1,5 @@
package com.ruoyi.project.common;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
@ -14,6 +9,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import com.ruoyi.common.utils.FileUtils;
/**
*
@ -29,8 +25,6 @@ public class CommonController
public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
{
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
InputStream inputStream = null;
OutputStream os = null;
try
{
String filePath = ResourceUtils.getURL("classpath:").getPath() + "static/file/" + fileName;
@ -38,36 +32,16 @@ public class CommonController
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + setFileDownloadHeader(request, realFileName));
File file = new File(filePath);
inputStream = new FileInputStream(file);
os = response.getOutputStream();
byte[] b = new byte[1024];
int length;
while ((length = inputStream.read(b)) > 0)
FileUtils.writeBytes(filePath, response.getOutputStream());
if (delete)
{
os.write(b, 0, length);
}
if (delete && file.exists())
{
file.delete();
FileUtils.deleteFile(filePath);
}
}
catch (Exception e)
{
log.error("下载文件失败", e);
}
finally
{
try
{
os.close();
inputStream.close();
}
catch (IOException e)
{
log.error("close close fail ", e);
}
}
}
public String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException

@ -23,47 +23,5 @@
statistics="true">
</cache>
<!-- 系统用户缓存 没必要过期 -->
<cache name="sys-userCache"
maxEntriesLocalHeap="10000"
overflowToDisk="false"
eternal="false"
diskPersistent="false"
timeToLiveSeconds="0"
timeToIdleSeconds="0"
statistics="true"/>
<!-- 系统用户授权缓存 没必要过期 -->
<cache name="sys-authCache"
maxEntriesLocalHeap="10000"
overflowToDisk="false"
eternal="false"
diskPersistent="false"
timeToLiveSeconds="0"
timeToIdleSeconds="0"
memoryStoreEvictionPolicy="LRU"
statistics="true"/>
<!-- 菜单缓存 没必要过期 -->
<cache name="sys-menuCache"
maxEntriesLocalHeap="10000"
overflowToDisk="false"
eternal="false"
diskPersistent="false"
timeToLiveSeconds="0"
timeToIdleSeconds="0"
statistics="true"/>
<!-- shiro 会话缓存 不需要序列化到磁盘 此处我们放到db中了 此处cache没必要过期 因为我们存放到db了 -->
<cache name="shiro-activeSessionCache"
maxEntriesLocalHeap="10000"
overflowToDisk="false"
eternal="false"
diskPersistent="false"
timeToLiveSeconds="0"
timeToIdleSeconds="0"
statistics="true"/>
</ehcache>
Loading…
Cancel
Save