summaryrefslogtreecommitdiff
path: root/src/main/java/com/mesasoft/cn/util/ControllerUtils.java
diff options
context:
space:
mode:
authorzhanghongqing <[email protected]>2022-08-09 16:54:16 +0800
committerzhanghongqing <[email protected]>2022-08-09 16:54:16 +0800
commitb3fa11d4b1b5a68d7b04fde5eb6cfbda557927eb (patch)
treea49d344e49fc427fbf4cf00aa4963c4d04cd98a4 /src/main/java/com/mesasoft/cn/util/ControllerUtils.java
parentd8a2be0d094ac9ba2d47c81ebf03b3fe6e34a078 (diff)
initializeHEADmain
Diffstat (limited to 'src/main/java/com/mesasoft/cn/util/ControllerUtils.java')
-rw-r--r--src/main/java/com/mesasoft/cn/util/ControllerUtils.java152
1 files changed, 152 insertions, 0 deletions
diff --git a/src/main/java/com/mesasoft/cn/util/ControllerUtils.java b/src/main/java/com/mesasoft/cn/util/ControllerUtils.java
new file mode 100644
index 0000000..e551434
--- /dev/null
+++ b/src/main/java/com/mesasoft/cn/util/ControllerUtils.java
@@ -0,0 +1,152 @@
+package com.mesasoft.cn.util;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.text.UnicodeUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.mesasoft.cn.modules.constant.DefaultValues;
+import com.zhazhapan.util.Checker;
+import org.apache.commons.lang3.StringUtils;
+
+import javax.activation.MimetypesFileTypeMap;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+
+/**
+ * @author pantao
+ * @since 2018/1/30
+ */
+public class ControllerUtils {
+
+ private ControllerUtils() {
+ }
+
+ /**
+ * 获取一个简单的响应状态
+ *
+ * @param isSuccess 是否操作成功
+ * @return 响应JSON字符串
+ */
+ public static String getResponse(boolean isSuccess) {
+ JSONObject jsonObject = new JSONObject();
+ if (isSuccess) {
+ jsonObject.put("status", "success");
+ } else {
+ jsonObject.put("status", "error");
+ }
+ return jsonObject.toString();
+ }
+
+ /**
+ * 加载本地资源
+ *
+ * @param response 返回的Response
+ * @param path 资源路径
+ * @param download 直接下载
+ */
+ public static void loadResource2(HttpServletResponse response, String path, boolean download) throws IOException {
+ if (Checker.isNotEmpty(path)) {
+ File file = new File(path);
+ if (download) {
+ response.setContentType(getContentType(file)+";charset=UTF-8");
+ setResponseFileName2(response, file.getName());
+ }
+ FileInputStream in = new FileInputStream(file);
+ ServletOutputStream os = response.getOutputStream();
+ byte[] b;
+ while (in.available() > 0) {
+ b = in.available() > 1024 ? new byte[1024] : new byte[in.available()];
+ in.read(b, 0, b.length);
+ os.write(b, 0, b.length);
+ }
+ in.close();
+ os.flush();
+ os.close();
+ } else {
+ response.sendRedirect(DefaultValues.NOT_FOUND_PAGE);
+ }
+ }
+ public static void loadResource(HttpServletResponse response, String path, boolean download) throws IOException {
+ if (Checker.isNotEmpty(path)) {
+ File file = new File(path);
+ if (download) {
+ response.setContentType(getContentType(file));
+ setResponseFileName( response, file.getName());
+ response.setCharacterEncoding("UTF-8");
+ }
+ FileInputStream in = new FileInputStream(file);
+ ServletOutputStream os = response.getOutputStream();
+ byte[] b;
+ while (in.available() > 0) {
+ b = in.available() > 1024 ? new byte[1024] : new byte[in.available()];
+ in.read(b, 0, b.length);
+ os.write(b, 0, b.length);
+ }
+ in.close();
+ os.flush();
+ os.close();
+ } else {
+ response.sendRedirect(DefaultValues.NOT_FOUND_PAGE);
+ }
+ }
+ public static String getContentType(File file) {
+ String defContentType = "application/octet-stream";
+ String fileName = file.getName();
+ String fileTyle=fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());
+ if (StringUtils.isNotBlank(fileTyle)) {
+ String type2 = Contants.CONTENT_TYPES.get(fileTyle);
+ if (StringUtils.isNotBlank(type2)) {
+ return type2;
+ }
+ } else {
+ String type1 = new MimetypesFileTypeMap().getContentType(file);
+ if (StringUtils.isNotBlank(type1)) {
+ return type1;
+ }
+ }
+ return defContentType;
+ }
+
+ /**
+ * 设置响应头的文件名
+ *
+ * @param response {@link HttpServletResponse}
+ * @param fileName 文件名
+ */
+ public static void setResponseFileName2(HttpServletResponse response, String fileName) {
+ response.setHeader("Content-Disposition", "attachment;filename=" + UnicodeUtil.toUnicode(fileName));
+ }
+ public static void setResponseFileName( HttpServletResponse response, String fileName) throws
+ UnsupportedEncodingException {
+ response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"),
+ "ISO-8859-1"));
+ }
+
+ public static void loadFile(HttpServletRequest request, HttpServletResponse response,String filePath,boolean download) throws IOException {
+ request.setCharacterEncoding("utf-8");
+ // 文件存储路径
+ // 从请求中获取文件名
+ File file=new File(filePath);
+ String fileName=file.getName();
+ // 创建输出流对象
+ ServletOutputStream outputStream = response.getOutputStream();
+ //以字节数组的形式读取文件
+ byte[] bytes = FileUtil.readBytes(filePath);
+ // 设置返回内容格式
+ response.setContentType("application/octet-stream;charset=UTF-8");
+ // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
+ // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
+ response.setHeader("filename", UnicodeUtil.toUnicode(fileName));
+ // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
+ fileName = new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
+ // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ // 返回数据到输出流对象中
+ outputStream.write(bytes);
+ // 关闭流对象
+ IoUtil.close(outputStream);
+
+ }
+}