java 操作阿里云 OSS
来源:互联网 发布:淘宝售前客服是做什么? 编辑:程序博客网 时间:2024/06/10 15:08
import java.io.InputStream;
import java.net.URL;
import java.util.Date;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.AppendObjectRequest;
import com.aliyun.oss.model.AppendObjectResult;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
/**
* oss操作类
*
*/
public class OssManage {
private static final Logger LOGGER = LoggerFactory.getLogger(OssManage.class);
private static String ACCESS_KEY_ID = null;
private static String ACCESS_KEY_SECRET = null;
private static String ENDPOINT = null;
private static String BUCKETNAME = null;
//private static String BUCKETNAME_VIDEO = null;
private static String OUT_OF_DATE = null;
private static OSSClient client = null;
private static ObjectMetadata meta = null;
static{
try {
ResourceBundle bundle = PropertyResourceBundle.getBundle("oss");
ACCESS_KEY_ID = bundle.getString("OSS_ACCESS_KEY_ID");
ACCESS_KEY_SECRET = bundle.getString("OSS_ACCESS_KEY_SECRET");
ENDPOINT = bundle.getString("OSS_ENDPOINT");
BUCKETNAME = bundle.getString("OSS_BUCKETNAME");
//BUCKETNAME_VIDEO = bundle.getString("OSS_BUCKETNAME_VIDEO");
OUT_OF_DATE = bundle.getString("OSS_OUT_OF_DATE");
} catch (java.lang.Exception e) {
e.printStackTrace();
}
}
public static void init(){
// 初始化一个OSSClient
client = new OSSClient(ENDPOINT,ACCESS_KEY_ID, ACCESS_KEY_SECRET);
meta = new ObjectMetadata();
}
/**
* @Description: 上传文件到OSS文件服务器
* @param content 文件流
* @param key 上传为OSS文件服务器的唯一标识
* @param mimeType 文档类型
* @throws Exception
* @ReturnType:String OSSObject的ETag值。
*/
public static String uploadFile(InputStream content,String key,String mimeType) throws Exception{
//进行初始化
init();
// 必须设置ContentLength
meta.setContentType(mimeType);
// 上传Object.
LOGGER.info("*****************上传图片到oss服务器开始*****************" + key);
PutObjectResult result = client.putObject(BUCKETNAME, key, content, meta);
LOGGER.info("*****************上传图片到oss服务器结束*****************" + key);
return result.getETag();
}
/**
* @Description: 根据key获取oss服务器上的图片地址
* @param key
* @return
* @ReturnType:String
*/
public static String getImgURl(String key){
init();
Date expires = new Date (new Date().getTime() + Integer.parseInt(OUT_OF_DATE)); // 30 minute to expire
GeneratePresignedUrlRequest generatePresignedUrlRequest ;
// if(key.startsWith("msplatform")){
// generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);
// }else {
// generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);
// }
generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);
generatePresignedUrlRequest.setExpiration(expires);
URL url = client.generatePresignedUrl(generatePresignedUrlRequest);
return url.toString();
}
/**
* @Description:根据key获取oss服务器上的ipa文件地址
* @param key
* @return
* @ReturnType:String
*/
public static String getIpaURl(String key){
init();
Date expires = new Date(new Date().getTime()+ 10*365*24*3600*1000);
GeneratePresignedUrlRequest generatePresignedUrlRequest ;
// if(key.startsWith("msplatform")){
// generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);
// }else {
// generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);
// }
generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);
generatePresignedUrlRequest.setExpiration(expires);
URL url = client.generatePresignedUrl(generatePresignedUrlRequest);
return url.toString();
}
/**
* @Description: 根据key获取oss服务器上的图片地址
* @param key
* @return
* @ReturnType:String
*/
public static InputStream getObject(String key){
init();
OSSObject object = null;
// if(key.startsWith("msplatform")){
// object= client.getObject(BUCKETNAME, key);
// }else{
// object= client.getObject(BUCKETNAME_VIDEO, key);
// }
object= client.getObject(BUCKETNAME, key);
object.getObjectMetadata().getContentType();
// 获取Object的输入流
InputStream objectContent = object.getObjectContent();
return objectContent;
}
/**
* @Description:删除文件
* @param key OSS文件服务器上文件的唯一标识
* @ReturnType:void
*/
public static void deleteFile(String key){
init();
client.deleteObject(BUCKETNAME, key);
}
/**
* @Description: 断点上传文件到OSS文件服务器
* @param content 文件流
* @param key 上传为OSS文件服务器的唯一标识
* @param position 位置
*/
public static String appendObjectFile(InputStream content,String key,int position,String mimeType) throws Exception{
//进行初始化
init();
// 必须设置ContentLength
meta.setContentLength(position);
meta.setContentType(mimeType);
meta.setCacheControl("no-cache");
meta.setContentEncoding("utf-8");
// 上传
LOGGER.info("*****************断点上传图片到oss服务器开始*****************" + key);
AppendObjectRequest appendObjectRequest = new AppendObjectRequest(BUCKETNAME, key, content, meta);
appendObjectRequest.setPosition(Long.valueOf(position));
AppendObjectResult appendObjectResult =client.appendObject(appendObjectRequest);
LOGGER.info("*****************断点上传图片到oss服务器结束*****************" + key);
return appendObjectResult.getNextPosition().toString();
}
/**
* 通过文件名判断并获取OSS服务文件上传时文件的contentType
* @param fileName 文件名
* @return 文件的contentType
*/
public static String getContentType(String fileName){
String fileExtension = fileName.substring(fileName.lastIndexOf(".")+1);
if("bmp".equalsIgnoreCase(fileExtension)) return "image/bmp";
if("gif".equalsIgnoreCase(fileExtension)) return "image/gif";
if("jpeg".equalsIgnoreCase(fileExtension) || "jpg".equalsIgnoreCase(fileExtension) || "png".equalsIgnoreCase(fileExtension) ) return "image/jpeg";
if("html".equalsIgnoreCase(fileExtension)) return "text/html";
if("txt".equalsIgnoreCase(fileExtension)) return "text/plain";
if("vsd".equalsIgnoreCase(fileExtension)) return "application/vnd.visio";
if("ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) return "application/vnd.ms-powerpoint";
if("doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) return "application/msword";
if("xml".equalsIgnoreCase(fileExtension)) return "text/xml";
return "text/html";
}
public static void main(String[] args) {
String imgURl = OssManage.getImgURl("u=1103657041,2822108077&fm=26&gp=0.jpg");
String ipaURl = OssManage.getIpaURl("u=1103657041,2822108077&fm=26&gp=0.jpg");
System.out.println(imgURl);
System.out.println(ipaURl);
}
}
自己的service实现类里的方法 做个记录
@Override
@Transactional
public Channels createChannel(String name, String description, MultipartFile file) {
Channels channel = new Channels();
channel.setLogo("ic_c.png");
// TODO 创建者id
//channel.setAgentId("");
channel.setCreatedAt(new Date());
channel.setUpdatedAt(new Date());
channel.setName(name);
channel.setDescription(description);
channelsMapper.insertSelective(channel);
try {
//oss 操作调用
OssManage.uploadFile(file.getInputStream(), "images/v3/channels/"+channel.getId()+"/ic_c.png", OssManage.getContentType("ic_c.png"));
} catch (Exception e) {
throw new RuntimeException("》》》》》》》》》》》》》》》》》oss 图片上传失败");
}
return channel;
}
- java 操作阿里云 OSS
- Java操作阿里云OSS系统
- Java操作阿里云OSS系统配置文件
- java操作阿里云的对象存储OSS
- Java操作阿里云OSS系统工具类
- java操作阿里云的对象存储OSS
- OSS阿里云对象存储服务,java文件操作
- java 上传文件到oss(阿里云)
- 阿里云 oss服务器文件上传 java
- 阿里云的OSS对象存储 java
- 阿里云OSS开发
- 阿里云OSS使用方法
- 测试阿里云OSS
- 阿里云 OSS+CDN
- 阿里云oss
- 阿里云OSS
- 阿里云oss
- 阿里云OSS配置
- 指向几个元素组成的一位数组指针的指针变量
- ubuntu 51单片机环境搭建
- virtualbox的USB识别
- 使用java将数据库文件复制到本地磁盘中
- 计算机专业方面的期刊介绍
- java 操作阿里云 OSS
- 深度学习模型-13 迁移学习(Transfer Learning)技术概述
- 单链表的一些常考的面试题——基础篇
- Java线程池的种类
- 从前端小白到技术专家,这里有3点可执行的建议
- 游戏人工智能之状态驱动智能体改进(三)
- 《JavaScript语言精粹》笔记(1)
- 二叉树层次遍历II
- selenium结合docker构建分布式测试环境