package com.huaheng.pc.common; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.huaheng.common.config.Global; import com.google.zxing.WriterException; import com.huaheng.common.config.Global; import com.huaheng.common.config.ServerConfig; import com.huaheng.common.utils.QRCodeGenerator; import com.huaheng.common.utils.file.FileUploadUtils; import com.huaheng.framework.config.HuaHengConfig; import com.huaheng.framework.web.domain.AjaxResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.*; import com.huaheng.common.utils.file.FileUtils; import org.springframework.web.multipart.MultipartFile; /** * 通用请求处理 * * @author huaheng */ @Controller public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Resource private ServerConfig serverConfig; @RequestMapping("common/download") 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; 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; } @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); } /** * 通用上传请求 */ @PostMapping("/common/upload") @ResponseBody public AjaxResult uploadFile(MultipartFile file) throws Exception { try { // 上传文件路径 String filePath = HuaHengConfig.getProfile(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + "/" + fileName; AjaxResult ajax = AjaxResult.success(); Map<String, Object> map = new HashMap<>(); map.put("fileName", fileName); map.put("url", url); ajax.setData(map); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } }