最近在做一个临时的项目,APP端在检测到程序有更新时,需要去后台下载新的安装包。具体过程如下:
controller层:
1
2
3
4
5
6
7
8
9
10
11
|
/**
* 下载app
* @param response
*/
@RequestMapping ( "downApp" )
@ResponseBody
public void Download(HttpServletResponse response) {
String fileName = "wuye.apk" ;
String result = FileUtil.downloadFile(response, fileName);
log.info( "app包下载结果:" ,result);
}
|
工具类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
public class FileUtil {
public static String downloadFile(HttpServletResponse response, String fileName) {
File path = null ;
response.setHeader( "content-type" , "application/octet-stream" );
response.setContentType( "application/octet-stream" );
try {
response.setHeader( "Content-Disposition" , "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8" ));
} catch (UnsupportedEncodingException e2) {
e2.printStackTrace();
}
byte [] buff = new byte [ 1024 ];
BufferedInputStream bis = null ;
OutputStream os = null ;
try {
path = new File(ResourceUtils.getURL( "classpath:" ).getPath());
os = response.getOutputStream();
bis = new BufferedInputStream( new FileInputStream( new File(path + "/doc/" + fileName)));
int i = bis.read(buff);
while (i != - 1 ) {
os.write(buff, 0 , buff.length);
os.flush();
i = bis.read(buff);
}
} catch (FileNotFoundException e1) {
//e1.getMessage()+"系统找不到指定的文件";
return "系统找不到指定的文件" ;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null ) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "success" ;
}
|
访问:http://127.0.0.1:8081/ymd/downApp 文件就下载下来了,本方法借鉴了 网络上的一些文章
到此这篇关于从Springboot项目中下载文件的文章就介绍到这了,更多相关Springboot项目下载文件内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/shenziyang/p/12510731.html