server/src/main/java/com/doumee/api/common/PublicCloudController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/com/doumee/core/constants/Constants.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/com/doumee/core/utils/azure/AzureBlobUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/com/doumee/service/third/AzureBlobStorageService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/resources/application-dev.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/resources/application-pro.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/resources/application-test.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
server/src/main/java/com/doumee/api/common/PublicCloudController.java
@@ -10,6 +10,7 @@ import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.FtpUtil; import com.doumee.core.utils.azure.AzureBlobUtil; import com.doumee.dao.system.model.SystemDictData; import com.doumee.service.common.EmailService; import io.swagger.annotations.Api; @@ -17,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @@ -44,9 +46,12 @@ private SystemDictDataBiz systemDictDataBiz; @Autowired private EmailService emailService; @Value("${upload.type") private String uploadType; public static FtpUtil ftp = null; public static AzureBlobUtil azureBlobUtil = null; @ApiOperation(value = "æµè¯é®ä»¶åé") @RequestMapping(method= RequestMethod.POST,value="/testEmail") @@ -149,15 +154,7 @@ response.setContentType("text/html;charset=UTF-8"); Map<String, Object> context = new HashMap<>(); try { if(ftp == null){ ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(), Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()), systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(), systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PWD).getCode()); }else{ ftp.connect(); } initUploadTool(); context.put("success", true); context.put("code", 200); context.put("errno",0); @@ -167,7 +164,6 @@ List<MultipartFile> fileList = multipartRequest.getFiles("file"); Iterator<String> it = multipartRequest.getFileNames(); JSONArray jsonArray = new JSONArray(); if (fileList.size() > 0) { //éåæä»¶å表 Iterator<MultipartFile> fileIte = fileList.iterator(); @@ -181,7 +177,12 @@ String date = DateUtil.getNowShortDate(); String fName = date + "/" + UUID.randomUUID() + endType; String fileName = folder + fName; boolean r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()),index); boolean r =false; if(StringUtils.equals(Constants.uploadType.blob,uploadType)){ r = azureBlobUtil.uploadFileWithResponse( fileName,is);//ä¸ä¼ }else{ r = ftp.uploadInputstreamBatch(is, fileName, Constants.equalsInteger(index ,fileList.size()),index); } if (r) { JSONObject fileJSON = new JSONObject(); fileJSON.put("url", prefixPath + fileName); @@ -194,7 +195,6 @@ } } // while (it.hasNext()) { // MultipartFile file = multipartRequest.getFile(it.next()); // String originname = file.getOriginalFilename(); @@ -228,6 +228,26 @@ return; } private void initUploadTool() throws Exception{ if(StringUtils.equals(Constants.uploadType.blob,uploadType)){ if(azureBlobUtil == null){ azureBlobUtil = new AzureBlobUtil(systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ACCESSNAME).getCode(), systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ACCESSKEY).getCode(), systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_ENDPOINT).getCode(), systemDictDataBiz.queryByCode(Constants.AZURE_BLOB,Constants.AZURE_BLOB_CONTAINER).getCode()); } }else{ if(ftp == null){ ftp = new FtpUtil(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_HOST).getCode(), Integer.parseInt(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PORT).getCode()), systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_USERNAME).getCode(), systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_PWD).getCode()); }else{ ftp.connect(); } } } @ApiOperation(value = "ä¸ä¼ æä»¶å°FTP") @RequestMapping(method= RequestMethod.POST,value="/upload") @ResponseBody server/src/main/java/com/doumee/core/constants/Constants.java
@@ -12,6 +12,11 @@ */ public class Constants { public static final String AZURE_BLOB ="AZURE_BLOB" ; public static final String AZURE_BLOB_ACCESSNAME ="AZURE_BLOB_ACCESSNAME" ; public static final String AZURE_BLOB_ACCESSKEY ="AZURE_BLOB_ACCESSKEY" ; public static final String AZURE_BLOB_ENDPOINT ="AZURE_BLOB_ENDPOINT" ; public static final String AZURE_BLOB_CONTAINER ="AZURE_BLOB_CONTAINER" ; public static final String FTP ="FTP" ; public static final String FTP_HOST ="FTP_HOST" ; public static final String FTP_PORT ="FTP_PORT" ; @@ -42,6 +47,11 @@ public static final String WORKORDER_LOG_FILE_PATH ="WORKORDER_LOG_FILE_PATH" ; public static final String REDIS_TOKEN_KEY = "token_"; public interface uploadType{ String blob = "blob"; String ftp = "ftp"; } /** * ç¼åKey */ server/src/main/java/com/doumee/core/utils/azure/AzureBlobUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,82 @@ package com.doumee.core.utils.azure; import com.azure.core.http.rest.Response; import com.azure.storage.blob.BlobClient; import com.azure.storage.blob.BlobContainerClient; import com.azure.storage.blob.BlobServiceClient; import com.azure.storage.blob.BlobServiceClientBuilder; import com.azure.storage.blob.models.BlobRequestConditions; import com.azure.storage.blob.models.BlockBlobItem; import com.azure.storage.blob.options.BlobParallelUploadOptions; import lombok.Data; import lombok.extern.slf4j.Slf4j; import java.io.InputStream; @Data @Slf4j public class AzureBlobUtil { public String connectionString; public BlobServiceClient blobServiceClient; public String accountName; public String accountKey; public String endpoint; public String container; public BlobContainerClient blobContainerClient ; public AzureBlobUtil(String accountName, String accountKey, String endpoint, String container){ try { this.accountKey = accountKey; this.accountName = accountName; this.endpoint = endpoint; this.container = container; this.connectionString = "DefaultEndpointsProtocol=https;AccountName=" + this.accountName + ";AccountKey=" + this.accountKey + ";EndpointSuffix=" + endpoint; this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient(); this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container); }catch (Exception e) { e.printStackTrace(); } } public void initClient( ) { try { this.blobServiceClient = new BlobServiceClientBuilder().connectionString(connectionString).buildClient(); this.blobContainerClient = this.blobServiceClient.getBlobContainerClient(this.container); }catch (Exception e) { e.printStackTrace(); } } public void uploadFile(String fileName, InputStream data) { try { if(getBlobContainerClient() == null){ initClient(); } BlobClient client = this.blobContainerClient.getBlobClient(fileName); client.upload(data, data.available(), true); }catch (Exception e) { e.printStackTrace(); } } public boolean uploadFileWithResponse(String fileName, InputStream inputStream) { try { if(getBlobContainerClient() == null){ initClient(); } BlobParallelUploadOptions options = new BlobParallelUploadOptions(inputStream, inputStream.available()); options.setRequestConditions(new BlobRequestConditions().setIfNoneMatch("*")); Response<BlockBlobItem> rsp = this.blobContainerClient.getBlobClient(fileName).uploadWithResponse(options, null, null); if(rsp.getStatusCode()==201) { log.info("ä¸ä¼ æåï¼........"+fileName); return true; } }catch (Exception e) { e.printStackTrace(); log.info("ä¸ä¼ 失败ï¼........"+e.getMessage()); } return false; } } server/src/main/java/com/doumee/service/third/AzureBlobStorageService.java
ÎļþÒÑɾ³ý server/src/main/resources/application-dev.yml
@@ -83,9 +83,8 @@ privateKey: # RSAç§é¥ time: 600000 azure: storage: connectionString: DefaultEndpointsProtocol=https;AccountName=<yourAccountName>;AccountKey=<yourAccountKey>;EndpointSuffix=core.windows.net upload: type: ftp server/src/main/resources/application-pro.yml
@@ -53,6 +53,8 @@ username: admin password: upload: type: blob qiwei: serviceurl: https://wecom-qyapi.unilever-china.com/ server/src/main/resources/application-test.yml
@@ -73,5 +73,9 @@ username: admin password: 111111 upload: type: blob qiwei: serviceurl: https://qyapi.weixin.qq.com