No Description

QcloudCloudStorageService.java 3.0KB

    /** * Copyright 2018 人人开源 http://www.renren.io * <p> * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package io.renren.modules.oss.cloud; import com.alibaba.fastjson.JSONObject; import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.request.UploadFileRequest; import com.qcloud.cos.sign.Credentials; import io.renren.common.exception.RRException; import org.apache.commons.io.IOUtils; import java.io.IOException; import java.io.InputStream; /** * 腾讯云存储 * @author chenshun * @email sunlightcs@gmail.com * @date 2017-03-26 20:51 */ public class QcloudCloudStorageService extends CloudStorageService { private COSClient client; public QcloudCloudStorageService(CloudStorageConfig config){ this.config = config; //初始化 init(); } private void init(){ Credentials credentials = new Credentials(config.getQcloudAppId(), config.getQcloudSecretId(), config.getQcloudSecretKey()); //初始化客户端配置 ClientConfig clientConfig = new ClientConfig(); //设置bucket所在的区域,华南:gz 华北:tj 华东:sh clientConfig.setRegion(config.getQcloudRegion()); client = new COSClient(clientConfig, credentials); } @Override public String upload(byte[] data, String path) { //腾讯云必需要以"/"开头 if(!path.startsWith("/")) { path = "/" + path; } //上传到腾讯云 UploadFileRequest request = new UploadFileRequest(config.getQcloudBucketName(), path, data); String response = client.uploadFile(request); JSONObject jsonObject = JSONObject.parseObject(response); if(jsonObject.getInteger("code") != 0) { throw new RRException("文件上传失败," + jsonObject.getString("message")); } return config.getQcloudDomain() + 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 RRException("上传文件失败", e); } } @Override public String uploadSuffix(byte[] data, String suffix) { return upload(data, getPath(config.getQcloudPrefix(), suffix)); } @Override public String uploadSuffix(InputStream inputStream, String suffix) { return upload(inputStream, getPath(config.getQcloudPrefix(), suffix)); } }