1
2
package com . huaheng . pc . common ;
3
import java.io.IOException ;
4
5
6
7
import java.io.UnsupportedEncodingException ;
import java.net.URLEncoder ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
8
9
import com.huaheng.common.config.Global ;
huhai
authored
5 years ago
10
11
import com.google.zxing.WriterException ;
12
import com.huaheng.common.config.Global ;
13
import com.huaheng.common.utils.QRCodeGenerator ;
14
15
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
16
17
18
19
import org.springframework.http.HttpHeaders ;
import org.springframework.http.HttpStatus ;
import org.springframework.http.MediaType ;
import org.springframework.http.ResponseEntity ;
20
21
import org.springframework.stereotype.Controller ;
import org.springframework.util.ResourceUtils ;
22
23
import org.springframework.web.bind.annotation.GetMapping ;
import org.springframework.web.bind.annotation.PathVariable ;
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import org.springframework.web.bind.annotation.RequestMapping ;
import com.huaheng.common.utils.file.FileUtils ;
/**
* 通用请求处理
*
* @author huaheng
*/
@Controller
public class CommonController
{
private static final Logger log = LoggerFactory . getLogger ( CommonController . class );
@RequestMapping ( "common/download" )
38
39
40
41
42
public void fileDownload ( String fileName , Boolean delete , HttpServletResponse response , HttpServletRequest request ) {
try {
String realFileName = System . currentTimeMillis () + fileName . substring ( fileName . indexOf ( "_" ) + 1 );
String filePath = Global . getDownloadPath () + fileName ;
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
response . setCharacterEncoding ( "utf-8" );
response . setContentType ( "multipart/form-data" );
response . setHeader ( "Content-Disposition" , "attachment;fileName=" + setFileDownloadHeader ( request , realFileName ));
FileUtils . writeBytes ( filePath , response . getOutputStream ());
if ( delete )
{
FileUtils . deleteFile ( filePath );
}
}
catch ( Exception e )
{
log . error ( "下载文件失败" , e );
}
}
public String setFileDownloadHeader ( HttpServletRequest request , String fileName ) throws UnsupportedEncodingException
{
final String agent = request . getHeader ( "USER-AGENT" );
String filename = fileName ;
if ( agent . contains ( "MSIE" ))
{
// IE浏览器
filename = URLEncoder . encode ( filename , "utf-8" );
filename = filename . replace ( "+" , " " );
}
else if ( agent . contains ( "Firefox" ))
{
// 火狐浏览器
filename = new String ( fileName . getBytes (), "ISO8859-1" );
}
else if ( agent . contains ( "Chrome" ))
{
// google浏览器
filename = URLEncoder . encode ( filename , "utf-8" );
}
else
{
// 其它浏览器
filename = URLEncoder . encode ( filename , "utf-8" );
}
return filename ;
}
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
@GetMapping ( value = "/image/{text}" )
public ResponseEntity < byte []> getImage ( @PathVariable ( "text" ) String text ) {
byte [] qrcode = null ;
try {
qrcode = QRCodeGenerator . getQRCodeImage ( text , 100 , 100 );
} catch ( WriterException e ) {
e . printStackTrace ();
} catch ( IOException e ) {
e . printStackTrace ();
}
// Set headers
final HttpHeaders headers = new HttpHeaders ();
headers . setContentType ( MediaType . IMAGE_PNG );
return new ResponseEntity < byte []>( qrcode , headers , HttpStatus . CREATED );
}
103
}