文件上传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属性设置为公共读写。

posted on 2018-11-21 15:34 LH–Yu 阅读() 评论() 编辑 收藏

版权声明:本文为LH--Yu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LH--Yu/p/9995428.html