OSS开发
项目里有大量图片和文件,给服务器的内存造成了较大压力,需要使用阿里云OSS存储,把文件和图片上传到OSS
上传文件代码:
/**
* @Description: 上传文件到OSS文件服务器
* @param key
* 上传为OSS文件服务器的唯一标识
* @throws Exception
* @param filePath
* @param key
*
*/
public static String uploadFile(String key, InputStream fileInputStream, Date expires) {
// 生成OSSClient,您可以指定一些参数,详见“SDK手册 > Java-SDK > 初始化”,
// 链接地址是:https://help.aliyun.com/document_detail/oss/sdk/java-sdk/init.html?spm=5176.docoss/sdk/java-sdk/get-start
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
// meta.setContentEncoding("UTF-8");
// 上传Object.
ossClient.putObject(bucketName, key, fileInputStream);
// System.out.println("Object:" + key + "存入OSS成功。");
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType(getcontentType(key));
// Date expires = new Date(System.currentTimeMillis() + 10 * 365 * 24 * 3600 * 1000);
String[] url = ossClient.generatePresignedUrl(bucketName, key, expires).toString().split("\\?");
String fileUrl = url[0].toString();
//String fileUrl1 = fileUrl.substring(0, 5) + "s" + fileUrl.substring(5);
// System.out.println("uploadFile()方法执行成功,返回fileUrl:" + fileUrl);
return fileUrl;
} catch (Exception e) {
e.printStackTrace();
System.out.println("uploadFile()方法执行失败");
return null;
} finally {
ossClient.shutdown();
}
}
- endpoint是访问OSS的域名。如果您已经在OSS的控制台上 创建了Bucket,请在控制台上查看域名。
- endpoint的格式形如“http://oss-cn-hangzhou.aliyuncs.com/”,注意http://后不带bucket名称,
- 比如“http://bucket-name.oss-cn-hangzhou.aliyuncs.com”,是错误的endpoint,请去掉其中的“bucket-name”。
- accessKeyId和accessKeySecret是OSS的访问密钥,您可以在控制台上创建和查看,
- 创建和查看访问密钥的链接地址是:https://ak-console.aliyun.com/#/。
- 注意:accessKeyId和accessKeySecret前后都没有空格,从控制台复制时请检查并去除多余的空格。
- Bucket用来管理所存储Object的存储空间,详细描述请参看“开发人员指南 > 基本概念 > OSS基本概念介绍”。
- Bucket命名规范如下:只能包括小写字母,数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
以上参数最好写在配置文件中,方便修改
在上传文件时还要判断一下文件的类型,否则上传完成之后无法下载或在线浏览
代码:
/**
* 判断文件的类型
* @param FilenameExtension
* @return
*/
public static String getcontentType(String fileName) {