From b8f2c19b869986efa519f1846b63b11378147861 Mon Sep 17 00:00:00 2001
From: zrj <646384940@qq.com>
Date: Tue, 05 Nov 2024 22:11:27 +0800
Subject: [PATCH] 增加空间数据和基础接口及shp导入导出
---
src/main/java/org/springblade/common/utils/ZipUtil.java | 142 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 138 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/springblade/common/utils/ZipUtil.java b/src/main/java/org/springblade/common/utils/ZipUtil.java
index 165ce93..eb9c1d3 100644
--- a/src/main/java/org/springblade/common/utils/ZipUtil.java
+++ b/src/main/java/org/springblade/common/utils/ZipUtil.java
@@ -1,8 +1,13 @@
package org.springblade.common.utils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.*;
+import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Enumeration;
@@ -81,7 +86,12 @@
return list;
}
- // 定义一个公共的静态方法zipFolder,用于压缩文件夹
+ /**
+ * 压缩文件夹
+ * @param sourceFolderPath 压缩文件路径
+ * @param zipFilePath 压缩后包的路径
+ * @return
+ */
public static boolean zipFolder(String sourceFolderPath, String zipFilePath) {
File sourceFile = new File(sourceFolderPath);
try (
@@ -96,8 +106,48 @@
return false;
}
- // 将文件夹整体压缩
- private static void zipFile(File fileToZip, String fileName, ZipOutputStream zos) throws IOException {
+ /**
+ * 压缩文件夹
+ * @param sourceFolderPath 压缩文件路径
+ * @param zos zip输出流
+ * @return
+ */
+ public static boolean zipFolder(String sourceFolderPath,ZipOutputStream zos) {
+ File sourceFile = new File(sourceFolderPath);
+ try {
+ zipFile(sourceFile, sourceFile.getName(), zos);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }finally {
+ // 删除生成的文件
+ deleteDirectory(sourceFile);
+ }
+ return false;
+ }
+
+ /**
+ * 删除文件夹下文件
+ * @param directoryToBeDeleted
+ * @return
+ */
+ public static boolean deleteDirectory(File directoryToBeDeleted) {
+ File[] allContents = directoryToBeDeleted.listFiles();
+ if (allContents != null) {
+ for (File file : allContents) {
+ deleteDirectory(file);
+ }
+ }
+ return directoryToBeDeleted.delete();
+ }
+
+ /**
+ * 将文件夹整体压缩
+ * @param fileToZip
+ * @param fileName 文件名称
+ * @param zos
+ * @throws IOException
+ */
+ public static void zipFile(File fileToZip, String fileName, ZipOutputStream zos) throws IOException {
if (fileToZip.isHidden()) {
return;
}
@@ -126,7 +176,91 @@
fis.close();
}
- public static void main(String[] args) {
+ /**
+ * 设置导出zip的响应格式
+ *
+ * @param request
+ * @param response
+ * @param fileZip zip的名字
+ * @param filePath zip的路径
+ * @throws UnsupportedEncodingException
+ */
+ public static void downLoadFile(HttpServletRequest request, HttpServletResponse response, String fileZip, String filePath) throws UnsupportedEncodingException {
+ //进行浏览器下载
+ final String userAgent = request.getHeader("USER-AGENT");
+ //判断浏览器代理并分别设置响应给浏览器的编码格式
+ String finalFileName = null;
+ if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Trident")) {
+ // IE浏览器
+ finalFileName = URLEncoder.encode(fileZip, "UTF8");
+ System.out.println("IE浏览器");
+ } else if (StringUtils.contains(userAgent, "Mozilla")) {
+ // google,火狐浏览器
+ finalFileName = new String(fileZip.getBytes(), "ISO8859-1");
+ } else {
+ // 其他浏览器
+ finalFileName = URLEncoder.encode(fileZip, "UTF8");
+ }
+ // 告知浏览器下载文件,而不是直接打开,浏览器默认为打开
+ response.setContentType("application/x-download");
+ // 下载文件的名称
+ response.setHeader("Content-Disposition", "attachment;filename=\"" + finalFileName + "\"");
+
+ ServletOutputStream servletOutputStream = null;
+ try {
+ servletOutputStream = response.getOutputStream();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ DataOutputStream temps = new DataOutputStream(
+ servletOutputStream);
+ // 浏览器下载文件的路径
+ DataInputStream in = null;
+ try {
+ in = new DataInputStream(
+ new FileInputStream(filePath));
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ byte[] b = new byte[2048];
+ // 之后用来删除临时压缩文件
+ File reportZip = new File(filePath);
+ try {
+ while ((in.read(b)) != -1) {
+ temps.write(b);
+ }
+ temps.flush();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (temps != null) {
+ try {
+ temps.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (reportZip != null) {
+ // 删除服务器本地产生的临时压缩文件!
+ reportZip.delete();
+ }
+ try {
+ servletOutputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+ public static void main(String[] args) {
// 调用方法进行测试
}
}
--
Gitblit v1.9.3