From f7a1036a9ce9fdfd147362ef3ba2ede896f749ab Mon Sep 17 00:00:00 2001 From: 1 <1@qq> Date: Wed, 10 Apr 2019 17:28:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=B8=8B=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../messagecollect/entity/FileEntity.java | 50 ------ .../entity/FileEntityBuilder.java | 166 ++++++++++++++++++ 2 files changed, 166 insertions(+), 50 deletions(-) delete mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntity.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntityBuilder.java diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntity.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntity.java deleted file mode 100644 index 63c40f458..000000000 --- a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntity.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.fr.design.mainframe.messagecollect.entity; - -/** - * @author alex sung - * @date 2019/4/8 - */ -public class FileEntity { - /** - * 文件名 - */ - private String fileName; - /** - * 文件的完整路径 - */ - private String pathName; - /** - * 文件夹路径 - */ - private String folderName; - - public FileEntity(String fileName, String pathName, String folderName) { - this.fileName = fileName; - this.pathName = pathName; - this.folderName = folderName; - } - - public String getFileName() { - return fileName; - } - - public void setFileName(String fileName) { - this.fileName = fileName; - } - - public String getPathName() { - return pathName; - } - - public void setPathName(String pathName) { - this.pathName = pathName; - } - - public String getFolderName() { - return folderName; - } - - public void setFolderName(String folderName) { - this.folderName = folderName; - } -} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntityBuilder.java b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntityBuilder.java new file mode 100644 index 000000000..85d8e40ce --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/messagecollect/entity/FileEntityBuilder.java @@ -0,0 +1,166 @@ +package com.fr.design.mainframe.messagecollect.entity; + +import com.fr.general.CloudCenter; +import com.fr.general.IOUtils; +import com.fr.general.http.HttpRequestType; +import com.fr.general.http.HttpToolbox; +import com.fr.json.JSONArray; +import com.fr.json.JSONException; +import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.CommonUtils; +import com.fr.stable.EncodeConstants; +import com.fr.stable.ProductConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; +import com.fr.third.org.apache.http.entity.mime.MultipartEntityBuilder; +import com.fr.third.org.apache.http.entity.mime.content.FileBody; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.ZipEntry; + +/** + * @author alex sung + * @date 2019/4/8 + */ +public class FileEntityBuilder { + + private static final String INTELLI_OPERATION_URL = "intelli.operation.url"; + private static final String OPERATION_URL = "https://cloud.fanruan.com/config/protect/operation"; + private static final String ATTR_SIGNATURE = "signature"; + private static final String ATTR_KEY = "key"; + /** + * 文件名 + */ + private String fileName; + /** + * 文件的完整路径 + */ + private String pathName; + /** + * 文件夹路径 + */ + private String folderName; + + public FileEntityBuilder(String fileName, String pathName, String folderName) { + this.fileName = fileName; + this.pathName = pathName; + this.folderName = folderName; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getPathName() { + return pathName; + } + + public void setPathName(String pathName) { + this.pathName = pathName; + } + + public String getFolderName() { + return folderName; + } + + public void setFolderName(String folderName) { + this.folderName = folderName; + } + + public File generateZipFile(String pathName) { + File zipFile = null; + try { + File file = new File(pathName); + zipFile = new File(pathName + ".zip"); + InputStream input = null; + java.util.zip.ZipOutputStream zipOut = null; + zipOut = new java.util.zip.ZipOutputStream(new FileOutputStream(zipFile)); + int temp = 0; + if (file.isDirectory()) { + File lists[] = file.listFiles(); + for (int i = 0; i < lists.length; i++) { + input = new FileInputStream(lists[i]); + zipOut.putNextEntry(new ZipEntry(file.getName() + + File.separator + lists[i].getName())); + while ((temp = input.read()) != -1) { + zipOut.write(temp); + } + input.close(); + } + } + zipOut.close(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + return zipFile; + } + + public void generateFile(JSONArray jsonArray, String pathName) { + try { + String content = jsonArray.toString(); + File file = new File(pathName + ".json"); + StableUtils.makesureFileExist(file); + FileOutputStream out = new FileOutputStream(file); + InputStream in = new ByteArrayInputStream(content.getBytes(EncodeConstants.ENCODING_UTF_8)); + IOUtils.copyBinaryTo(in, out); + out.close(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + + public void deleteFileAndZipFile(File zipFile, String pathName) { + File file = new File(StableUtils.pathJoin(ProductConstants.getEnvHome(), pathName)); + CommonUtils.deleteFile(file); + CommonUtils.deleteFile(zipFile); + } + + /** + * 上传文件到云中心 + * @param file 待上传文件 + * @param keyFileName 目标文件 + * @throws IOException + */ + public static void uploadFile(File file, String keyFileName) throws IOException { + String url = generateSignedUploadUrl("FocusPoint/"+keyFileName); + if(StringUtils.isEmpty(url)){ + FineLoggerFactory.getLogger().error("url is null."); + }else { + MultipartEntityBuilder builder = MultipartEntityBuilder.create() + .addPart("file", new FileBody(file)); + Map headers = new HashMap(); + headers.put("Content-Type", "application/zip"); + HttpToolbox.upload(url, builder, Charset.forName("utf-8"), headers, HttpRequestType.PUT); + } + } + + private static String generateSignedUploadUrl(String fileKeyName) throws IOException { + String url = CloudCenter.getInstance().acquireUrlByKind(INTELLI_OPERATION_URL, OPERATION_URL); + Map parameters = new HashMap(); + parameters.put(ATTR_KEY, fileKeyName); + parameters.put(ATTR_SIGNATURE, String.valueOf(CommonUtils.signature())); + String responseText = HttpToolbox.get(url, parameters); + try { + JSONObject data = new JSONObject(responseText); + if ("success".equals(data.optString("status"))) { + return data.optString("url"); + } + } catch (JSONException e) { + FineLoggerFactory.getLogger().error("Illegal response text."); + } + return null; + } +}