QiniuCloudStorageService.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.kmall.common.oss;
  2. import com.kmall.common.utils.RRException;
  3. import com.qiniu.common.Zone;
  4. import com.qiniu.http.Response;
  5. import com.qiniu.storage.Configuration;
  6. import com.qiniu.storage.UploadManager;
  7. import com.qiniu.util.Auth;
  8. import org.apache.commons.io.IOUtils;
  9. import org.springframework.web.multipart.MultipartFile;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. /**
  13. * 七牛云存储
  14. *
  15. * @author Scott
  16. * @email
  17. * @date 2017-03-25 15:41
  18. */
  19. public class QiniuCloudStorageService extends CloudStorageService {
  20. private UploadManager uploadManager;
  21. private String token;
  22. public QiniuCloudStorageService(CloudStorageConfig config) {
  23. this.config = config;
  24. //初始化
  25. init();
  26. }
  27. private void init() {
  28. uploadManager = new UploadManager(new Configuration(Zone.autoZone()));
  29. token = Auth.create(config.getQiniuAccessKey(), config.getQiniuSecretKey()).
  30. uploadToken(config.getQiniuBucketName());
  31. }
  32. @Override
  33. public String upload(MultipartFile file) throws Exception {
  34. String fileName = file.getOriginalFilename();
  35. String prefix = fileName.substring(fileName.lastIndexOf(".") + 1);
  36. return upload(file.getBytes(), getPath(config.getAliyunPrefix()) + "." + prefix);
  37. }
  38. @Override
  39. public String upload(byte[] data, String path) {
  40. try {
  41. Response res = uploadManager.put(data, path, token);
  42. if (!res.isOK()) {
  43. throw new RuntimeException("上传七牛出错:" + res.toString());
  44. }
  45. } catch (Exception e) {
  46. throw new RRException("上传文件失败,请核对七牛配置信息", e);
  47. }
  48. return config.getQiniuDomain() + "/" + path;
  49. }
  50. @Override
  51. public String upload(InputStream inputStream, String path) {
  52. try {
  53. byte[] data = IOUtils.toByteArray(inputStream);
  54. return this.upload(data, path);
  55. } catch (IOException e) {
  56. throw new RRException("上传文件失败", e);
  57. }
  58. }
  59. }