package com.cloudroam.extension.file;
|
|
import com.qiniu.common.QiniuException;
|
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.cloudroam.module.file.AbstractUploader;
|
import com.cloudroam.module.file.FileProperties;
|
import com.cloudroam.module.file.FileTypeEnum;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
|
import java.io.ByteArrayInputStream;
|
|
/**
|
* 文件上传服务实现,上传到七牛云
|
*
|
* @author
|
* @author
|
*/
|
@Slf4j
|
public class QiniuUploader extends AbstractUploader {
|
|
@Autowired
|
private FileProperties fileProperties;
|
|
@Value("${lin.file.qiniuyun.access-key}")
|
private String accessKey;
|
|
@Value("${lin.file.qiniuyun.secret-key}")
|
private String secretKey;
|
|
@Value("${lin.file.qiniuyun.bucket}")
|
private String bucket;
|
|
private UploadManager uploadManager;
|
|
private String upToken;
|
|
public void initUploadManager() {
|
Configuration cfg = new Configuration(Region.region2());
|
uploadManager = new UploadManager(cfg);
|
Auth auth = Auth.create(accessKey, secretKey);
|
upToken = auth.uploadToken(bucket);
|
}
|
|
@Override
|
protected FileProperties getFileProperties() {
|
return fileProperties;
|
}
|
|
@Override
|
protected String getStorePath(String newFilename) {
|
return fileProperties.getDomain() + newFilename;
|
}
|
|
@Override
|
protected String getFileType() {
|
return FileTypeEnum.REMOTE.getValue();
|
}
|
|
/**
|
* 处理一个文件数据
|
*
|
* @param bytes 文件数据,比特流
|
* @param newFilename 新文件名称
|
* @return 处理是否成功,如果出现异常则返回 false,避免把失败的写入数据库
|
*/
|
@Override
|
protected boolean handleOneFile(byte[] bytes, String newFilename) {
|
initUploadManager();
|
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes);
|
try {
|
Response response = uploadManager.put(byteInputStream, newFilename, upToken, null, null);
|
log.info(response.toString());
|
return response.isOK();
|
} catch (QiniuException ex) {
|
Response r = ex.response;
|
log.error("qiniuyun upload file error: {}", r.error);
|
return false;
|
}
|
}
|
}
|