From 6d99bcc159ac61e4af14a14e6bcc4eb3bba0d1a3 Mon Sep 17 00:00:00 2001 From: youc3576 <357649470@qq.com> Date: Fri, 10 Aug 2018 13:47:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20AdminStorageController?= =?UTF-8?q?.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/web/AdminStorageController.java | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java index 72d82889..6c885711 100644 --- a/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java +++ b/litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java @@ -43,17 +43,49 @@ public class AdminStorageController { return ResponseUtil.ok(data); } + private String generateKey(String originalFilename){ + int index = originalFilename.lastIndexOf('.'); + String suffix = originalFilename.substring(index); + + String key = null; + LitemallStorage storageInfo = null; + + do{ + key = CharUtil.getRandomString(20) + suffix; + storageInfo = litemallStorageService.findByKey(key); + } + while(storageInfo != null); + + return key; + } @PostMapping("/create") public Object create(@LoginAdmin Integer adminId, @RequestParam("file") MultipartFile file) throws IOException { - if (adminId == null) { + if(adminId == null){ return ResponseUtil.unlogin(); } String originalFilename = file.getOriginalFilename(); - String url = storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), originalFilename); - Map data = new HashMap<>(); - data.put("url", url); - return ResponseUtil.ok(data); + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + return ResponseUtil.badArgumentValue(); + } + String key = generateKey(originalFilename); + storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), key); + + String url = storageService.generateUrl(key); + LitemallStorage storageInfo = new LitemallStorage(); + storageInfo.setName(originalFilename); + storageInfo.setSize((int)file.getSize()); + storageInfo.setType(file.getContentType()); + storageInfo.setAddTime(LocalDateTime.now()); + storageInfo.setModified(LocalDateTime.now()); + storageInfo.setKey(key); + storageInfo.setUrl(url); + litemallStorageService.add(storageInfo); + return ResponseUtil.ok(storageInfo); } @PostMapping("/read") -- Gitee From e12f056111787fbfa7f692aecb764a46661fef0f Mon Sep 17 00:00:00 2001 From: youc3576 <357649470@qq.com> Date: Fri, 10 Aug 2018 13:49:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20QiniuStorage.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../litemall/core/storage/QiniuStorage.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/storage/QiniuStorage.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/storage/QiniuStorage.java index 1665018b..b3140e10 100644 --- a/litemall-core/src/main/java/org/linlinjava/litemall/core/storage/QiniuStorage.java +++ b/litemall-core/src/main/java/org/linlinjava/litemall/core/storage/QiniuStorage.java @@ -1,10 +1,12 @@ package org.linlinjava.litemall.core.storage; +import com.google.gson.Gson; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.BucketManager; import com.qiniu.storage.Configuration; import com.qiniu.storage.UploadManager; +import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.util.Auth; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; @@ -17,13 +19,14 @@ import java.util.stream.Stream; public class QiniuStorage implements Storage { - private String endpoint; + private String endpoint; private String accessKey; private String secretKey; private String bucketName; private String upToken; private UploadManager uploadManager; private BucketManager bucketManager; + private DefaultPutRet putRet; public String getEndpoint() { return endpoint; @@ -62,14 +65,12 @@ public class QiniuStorage implements Storage { */ @Override public void store(InputStream inputStream, long contentLength, String contentType, String keyName) { - if(uploadManager == null){ - uploadManager = new UploadManager(new Configuration()); - Auth auth = Auth.create(accessKey, secretKey); - upToken = auth.uploadToken(bucketName); - } - + uploadManager = new UploadManager(new Configuration()); + Auth auth = Auth.create(accessKey, secretKey); + upToken = auth.uploadToken(bucketName); try { Response response = uploadManager.put(inputStream, keyName, upToken, null, contentType); + putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); } catch (QiniuException ex) { ex.printStackTrace(); } @@ -103,20 +104,20 @@ public class QiniuStorage implements Storage { @Override public void delete(String keyName) { - if(bucketManager == null){ + if (bucketManager == null) { Auth auth = Auth.create(accessKey, secretKey); - bucketManager = new BucketManager(auth, new Configuration() ); + bucketManager = new BucketManager(auth, new Configuration()); } try { bucketManager.delete(bucketName, keyName); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } @Override public String generateUrl(String keyName) { - return endpoint + "/" + keyName; + return endpoint + "/" + putRet.key; } } -- Gitee