company/src/components/common/upload.vue
@@ -73,13 +73,13 @@ } } // const loading = this.$loading({ // lock: true, // text: 'ä¸ä¼ ä¸ï¼è¯·çå¾ ', // spinner: 'el-icon-loading', // background: 'rgba(0, 0, 0, 0.7)' // }); // this.$emit('loading') const loading = this.$loading({ lock: true, text: 'ä¸ä¼ ä¸ï¼è¯·çå¾ ', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); this.$emit('loading') const formdate = new FormData() formdate.append('file', e.target.files[0]) formdate.append('folder', this.folder) @@ -91,7 +91,7 @@ this.$message.error(e) }) .finally(() => { // loading.close(); loading.close(); this.$refs.file.value = null }) } server/company/src/main/java/com/doumee/api/BaseController.java
ÎļþÒÑɾ³ý server/platform/src/main/java/com/doumee/api/BaseController.java
ÎļþÒÑɾ³ý server/platform/src/main/java/com/doumee/api/common/CaptchaController.java
ÎļþÒÑɾ³ý server/platform/src/main/java/com/doumee/api/common/PublicController.java
ÎļþÒÑɾ³ý server/service/src/main/java/com/doumee/api/BaseController.java
server/service/src/main/java/com/doumee/api/common/CaptchaController.java
server/service/src/main/java/com/doumee/api/common/PublicController.java
ÎļþÃû´Ó server/company/src/main/java/com/doumee/api/common/PublicController.java ÐÞ¸Ä @@ -3,22 +3,21 @@ import com.alibaba.fastjson.JSONObject; import com.doumee.api.BaseController; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.annotation.excel.ExcelToPdfTool; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.aliyun.ALiYunUtil; import com.doumee.core.utils.aliyun.ProgressModel; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; @@ -53,21 +52,22 @@ @ApiImplicitParam(name = "folder", value = "æä»¶å¤¹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/upload", headers = "content-type=multipart/form-data") public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { public void uploadMobile(String folder, String uuid,HttpServletRequest request, HttpServletResponse response) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; upload(multipartRequest, response, folder + "/", systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()); systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode(), uuid); } @ApiOperation(value = "ä¸ä¼ å¾ç", notes = "ä¸ä¼ å¾ç", httpMethod = "POST", position = 6) @ApiImplicitParams({ @ApiImplicitParam(name = "folder", value = "æä»¶å¤¹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class), }) @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data") public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception { public void uploadPicture(String folder,String uuid, HttpServletRequest request, HttpServletResponse response) throws Exception { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator<String> fileNames = multipartRequest.getFileNames(); Map<String, Object> context = new HashMap<>(); @@ -86,11 +86,16 @@ systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(), systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()); systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode(), uuid); } @ApiOperation("æ ¹æ®uuidæ¥è¯¢ä¸ä¼ è¿åº¦") @GetMapping("/{uuid}") public ApiResponse<ProgressModel> findById(@PathVariable String uuid) { return ApiResponse.success(ALiYunUtil.queryProgressModel(uuid)); } public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName, String access_id, String access_key, String resourcePath, String endpoint) throws Exception { String access_id, String access_key, String resourcePath, String endpoint,String uuid) throws Exception { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); Map<String, Object> context = new HashMap<>(); @@ -139,7 +144,7 @@ || StringUtils.endsWith(key,".JPEG")){ type =0; } if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) { if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,uuid,null)) { // ç§»å¨æå,è¿åæä»¶å // sendSuccessMessage(response, resourcePath+key); context.put("success", true); server/service/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java
@@ -5,6 +5,9 @@ import com.aliyun.oss.ClientException; import com.aliyun.oss.OSSClient; import com.aliyun.oss.OSSException; import com.aliyun.oss.event.ProgressEvent; import com.aliyun.oss.event.ProgressEventType; import com.aliyun.oss.event.ProgressListener; import com.aliyun.oss.model.*; import com.aliyun.sdk.service.cloudauth20190307.AsyncClient; import com.aliyun.sdk.service.cloudauth20190307.models.Id2MetaVerifyRequest; @@ -17,6 +20,7 @@ import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -520,7 +524,7 @@ } public boolean uploadOnlineObject(InputStream inputStream, String bucketName, String key, public boolean uploadOnlineObjectNew(InputStream inputStream, String bucketName, String key, String mime) throws OSSException, ClientException, IOException { if (inputStream != null) { // 夿æ¯å¦åå¨ï¼ä¸åå¨å建 @@ -564,7 +568,63 @@ return false; } public static ProgressModel queryProgressModel(String id){ return PutObjectProgressListenerBiz.queryProgressModel(id); } public boolean uploadOnlineObject(InputStream inputStream, String bucketName, String key,String tempId, String mime) throws OSSException, ClientException, IOException { try { isExistBucket(bucketName); ObjectMetadata objectMeta = new ObjectMetadata(); objectMeta.setContentLength(inputStream.available()); // å¯ä»¥å¨metadata䏿 è®°æä»¶ç±»å if (StringUtils.isNotBlank(mime)) { objectMeta.setContentType(mime); } PutObjectRequest putObjectRequest = null; if(StringUtils.isNotBlank(tempId)){ ProgressModel pmodel = new ProgressModel(); pmodel.setKey(key); pmodel.setId(tempId); pmodel.setStartDate(new Date()); putObjectRequest = new PutObjectRequest(bucketName, key, inputStream).withProgressListener(new PutObjectProgressListenerBiz(pmodel)); }else{ putObjectRequest = new PutObjectRequest(bucketName, key, inputStream); } PutObjectResult putObjectResult = client.putObject(putObjectRequest); // ä¸è½½æä»¶çåæ¶æå®è¿åº¦æ¡åæ°ãæ¤å¤GetObjectProgressListenerDemo为è°ç¨ç±»çç±»åï¼è¯·å¨å®é ä½¿ç¨æ¶æ¿æ¢ä¸ºç¸åºçç±»åã // ossClient.getObject(new GetObjectRequest(bucketName,objectName). // <GetObjectRequest>withProgressListener(new GetObjectProgressListenerDemo())); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (inputStream != null) { // 夿æ¯å¦åå¨ï¼ä¸åå¨å建 inputStream.close(); } if (client != null) { client.shutdown(); } } return false; } server/service/src/main/java/com/doumee/core/utils/aliyun/ProgressModel.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package com.doumee.core.utils.aliyun; import lombok.Data; import java.util.ArrayList; import java.util.Date; import java.util.List; @Data public class ProgressModel { private String id; private String key; private long totalBytes;//æ»å¤§å° private long bytesWritten;//å·²ä¼ æ°æ® private double rate;//ä¸ä¼ è¿åº¦% private int status ;//ç¶æ 0å¾ ä¸ä¼ 1ä¸ä¼ ä¸ 2æå 3失败 private Date doneDate; private Date startDate; } server/service/src/main/java/com/doumee/core/utils/aliyun/PutObjectProgressListenerBiz.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,83 @@ package com.doumee.core.utils.aliyun; import com.aliyun.oss.event.ProgressEvent; import com.aliyun.oss.event.ProgressEventType; import com.aliyun.oss.event.ProgressListener; import lombok.Data; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; @Data public class PutObjectProgressListenerBiz implements ProgressListener { private static List<ProgressModel> currentUploadingList = new ArrayList<>(); private ProgressModel model; public PutObjectProgressListenerBiz(ProgressModel model){ currentUploadingList.add(model); this.model = model; } public static ProgressModel queryProgressModel(String id){ ProgressModel r = null; if(currentUploadingList!=null && currentUploadingList.size()>0){ List<ProgressModel> tlist = new ArrayList<>(); for(ProgressModel m : currentUploadingList){ if(StringUtils.equals(id,m.getId())){ r = m; } if(System.currentTimeMillis() - m .getStartDate().getTime() > 24*60*60*1000){ //å é¤è¶ è¿1å¤©çæ°æ® tlist.add(m); } } if(tlist.size()>0){ //ç§»é¤ä¸å¤©åçæ°æ® for(ProgressModel t : tlist){ currentUploadingList.remove(t); } } } return r; } @Override public void progressChanged(ProgressEvent progressEvent) { long bytes = progressEvent.getBytes(); ProgressEventType eventType = progressEvent.getEventType(); switch (eventType) { case TRANSFER_STARTED_EVENT: this.model.setDoneDate(new Date()); System.out.println("Start to upload......"); break; case REQUEST_CONTENT_LENGTH_EVENT: this.model.setTotalBytes(bytes); System.out.println( this.model.getTotalBytes() + " bytes in total will be uploaded to OSS"); break; case REQUEST_BYTE_TRANSFER_EVENT: this.model.setStatus(1); this.model.setBytesWritten(this.getModel().getBytesWritten()+bytes); if (this.model.getTotalBytes() >0) { int percent = (int)(this.getModel().getBytesWritten() * 100.0 / this.model.getTotalBytes()); this.model.setBytesWritten(this.getModel().getBytesWritten()+bytes); System.out.println(bytes + " bytes have been written at this time, upload progress: " + percent + "%(" + this.getModel().getBytesWritten() + "/" + this.model.getTotalBytes()+ ")"); } else { System.out.println(bytes + " bytes have been written at this time, upload ratio: unknown" + "(" + this.model.getBytesWritten() + "/...)"); } break; case TRANSFER_COMPLETED_EVENT: this.model.setStatus(2); this.model.setDoneDate(new Date()); System.out.println("Succeed to upload, " + this.getModel().getBytesWritten() + " bytes have been transferred in total"); break; case TRANSFER_FAILED_EVENT: this.model.setStatus(3); this.model.setDoneDate(new Date()); System.out.println("Failed to upload, " + this.getModel().getBytesWritten() + " bytes have been transferred"); break; default: break; } } } server/shop/src/main/java/com/doumee/api/common/CaptchaController.java
ÎļþÒÑɾ³ý server/shop/src/main/java/com/doumee/api/common/PublicController.java
ÎļþÒÑɾ³ý