| package com.javaweb.oss.cloud; | 
|   | 
| import com.qiniu.http.Response; | 
| import com.qiniu.storage.Configuration; | 
| import com.qiniu.storage.Region; | 
| import com.qiniu.storage.UploadManager; | 
| import com.qiniu.util.Auth; | 
| import com.javaweb.oss.domain.OssException; | 
| import org.apache.commons.io.IOUtils; | 
|   | 
| import java.io.IOException; | 
| import java.io.InputStream; | 
|   | 
| /** | 
|  * 七牛云存储 | 
|  */ | 
| public class QiniuCloudStorageService extends CloudStorageService | 
| { | 
|     private UploadManager uploadManager; | 
|   | 
|     private String        token; | 
|   | 
|     public QiniuCloudStorageService(CloudStorageConfig config) | 
|     { | 
|         this.config = config; | 
|         // 初始化 | 
|         init(); | 
|     } | 
|   | 
|     private void init() | 
|     { | 
|         uploadManager = new UploadManager(new Configuration(Region.autoRegion())); | 
|         token = Auth.create(config.getQiniuAccessKey(), config.getQiniuSecretKey()) | 
|                 .uploadToken(config.getQiniuBucketName()); | 
|     } | 
|   | 
|     @Override | 
|     public String upload(byte[] data, String path) | 
|     { | 
|         try | 
|         { | 
|             Response res = uploadManager.put(data, path, token); | 
|             if (!res.isOK()) | 
|             { | 
|                 throw new RuntimeException("上传七牛出错:" + res.toString()); | 
|             } | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             throw new OssException("上传文件失败,请核对七牛配置信息"); | 
|         } | 
|         return config.getQiniuDomain() + "/" + path; | 
|     } | 
|   | 
|     @Override | 
|     public String upload(InputStream inputStream, String path) | 
|     { | 
|         try | 
|         { | 
|             byte[] data = IOUtils.toByteArray(inputStream); | 
|             return this.upload(data, path); | 
|         } | 
|         catch (IOException e) | 
|         { | 
|             throw new OssException("上传文件失败"); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public String uploadSuffix(byte[] data, String suffix) | 
|     { | 
|         return upload(data, getPath(config.getQiniuPrefix(), suffix)); | 
|     } | 
|   | 
|     @Override | 
|     public String uploadSuffix(InputStream inputStream, String suffix) | 
|     { | 
|         return upload(inputStream, getPath(config.getQiniuPrefix(), suffix)); | 
|     } | 
| } |