Java 用阿里云OSS 怎样实现上传文件(源码分享)
时间:2018-11-21
本文章向大家介绍Java 用阿里云OSS 怎样实现上传文件(源码分享),需要的朋友可以参考一下
最近接到个需求,项目文件由原来上传至服务器本地改为上传至阿里oss服务器中。查看了官方相关文档后最终成功实现,在此记录一下相关经验。
官网文档:https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.707.5a0c1bd4CT02Ig
pom文件引用:
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.3</version>
</dependency>
上传工具类:
public class AliOssUtil {
static Logger logger = Logger.getLogger(AliOssUtil.class);
private static String endpoint = "http://oss-cn-beijing.aliyuncs.com";
private static String accessKeyId = "<yourAccessKeyId>";
private static String accessKeySecret = "<yourAccessKeySecret>";
private static String bucketName = "<yourBucketName>";
/**
* 上传公开文件至公共读写bucket
* @author LH_Yu
* @Param uploadFile 上传文件
* @Param picturePath 上传路径及取出url的key
*/
public static String uploadOSSFree(MultipartFile uploadFile, String picturePath) throws Exception {
// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 上传:picturePath + uploadFile.getOriginalFilename() --> key
ossClient.putObject(bucketName, picturePath + uploadFile.getOriginalFilename(), new ByteArrayInputStream(uploadFile.getBytes()));
// 关闭client
ossClient.shutdown();
//设置过期时间 -- 十年
Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
//取出文件上传路径
String url = ossClient.generatePresignedUrl(bucketName, picturePath + uploadFile.getOriginalFilename(), expiration).toString();
return url;
}
}
关于链接有效时间:oss提供的bucket有三种类型:公共读写、公共读、私有,私有bucket下的链接会有有效时间最大为64800秒,如果只是用来存储一些无关紧要的图片等可以将bucket属性设置为公共读写。
- BZOJ 1008 越狱
- Codeforces 706B Interesting drink
- HDU 1232 畅通工程
- 算法--枚举策略
- 趣味理解朴素贝叶斯
- python笔记1-用python解决小学生数学题
- POJ 1012 Joseph
- 1344 走格子
- 如何利用配置中心规范构建PaaS服务配置
- Selenium2+python自动化8-SeleniumBuilder辅助定位元素
- HDU 1250 Hat's Fibonacci
- Scrapy在Ubuntu下的安装与配置
- Selenium2+python自动化20-引入unittest框架
- HDU 1002 A + B Problem II(高精度加法(C++/Java))
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Attribute Routing With ASP.net MVC 5
- 使用ABAP代码生成二维码(QR Code)
- 动态加载 ExtJS 类库
- Visual Studio 2013 下 NuGet 无法识别自定义包路径的解决方法
- Xcode 5 中 xib 文件格式的调整
- 调用新浪微博显示用户信息
- 如何用代码动态生成ABAP类型
- 使用自签名证书内部分发 iOS7 应用
- 在 MvvmCross 下使用 iOS Storyboard
- 动态隐藏某些特殊类型的SAP CRM附件
- 设计模式之生成器模式
- Git 客户端保存用户名和密码
- SAP WebClient UI component模型元数据解析工具
- 设计模式之抽象工厂模式
- 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)