
前段时间正好做个项目,就是用的oss,普通上传和断点续传,代码贴出来,看是不是你需要的public class OssManage {public static String ACCESS_KEY_ID = null;public static String ACCESS_KEY_SECRET = null;public static String ENDPOINT = null;public static String BUCKETNAME = null;public static String BUCKETNAME_VIDEO = null;public static String OUT_OF_DATE = null;private OSSClient client = null;private ObjectMetadata meta = null;static{try {ACCESS_KEY_ID = SysConstgetProperty("OSS_ACCESS_KEY_ID");ACCESS_KEY_SECRET = SysConstgetProperty("OSS_ACCESS_KEY_SECRET");ENDPOINT = SysConstgetProperty("OSS_ENDPOINT"); BUCKETNAME = SysConstgetProperty("OSS_BUCKETNAME"); BUCKETNAME_VIDEO = SysConstgetProperty("OSS_BUCKETNAME_VIDEO"); OUT_OF_DATE = SysConstgetProperty("OSS_OUT_OF_DATE");} catch (javalangException e) {eprintStackTrace();}}public 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 String uploadFile(InputStream content,String key,String mimeType) throws Exception{//进行初始化init(); // 必须设置ContentLength metasetContentType(mimeType); // 上传Object LogUtilprintConsoleLog("上传到oss服务器开始" + key); PutObjectResult result = clientputObject(BUCKETNAME, key, content, meta); LogUtilprintConsoleLog("上传到oss服务器结束" + key); return resultgetETag();}/ @Description: 根据key获取oss服务器上的地址 @param key @return @ReturnType:String/public String getImgURl(String key){init();Date expires = new Date (new Date()getTime() + IntegerparseInt(OUT_OF_DATE)); // 30 minute to expireGeneratePresignedUrlRequest generatePresignedUrlRequest ;if(keystartsWith("msplatform")){generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);}else {generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);}generatePresignedUrlRequestsetExpiration(expires);URL url = clientgeneratePresignedUrl(generatePresignedUrlRequest);return urltoString();}/ @Description:根据key获取oss服务器上的ipa文件地址 @param key @return @ReturnType:String /public String getIpaURl(String key){init();Date expires = new Date(new Date()getTime()+ 103652436001000);GeneratePresignedUrlRequest generatePresignedUrlRequest ;if(keystartsWith("msplatform")){generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME, key);}else {generatePresignedUrlRequest =new GeneratePresignedUrlRequest(BUCKETNAME_VIDEO, key);}generatePresignedUrlRequestsetExpiration(expires);URL url = clientgeneratePresignedUrl(generatePresignedUrlRequest);return urltoString();}/ @Description: 根据key获取oss服务器上的地址 @param key @return @ReturnType:String/public InputStream getObject(String key){init();OSSObject object = null;if(keystartsWith("msplatform")){object= clientgetObject(BUCKETNAME, key);}else{object= clientgetObject(BUCKETNAME_VIDEO, key);}objectgetObjectMetadata()getContentType();// 获取Object的输入流InputStream objectContent = objectgetObjectContent();return objectContent;}/ @Description:删除文件 @param key OSS文件服务器上文件的唯一标识 @ReturnType:void/public void deleteFile(String key){init();clientdeleteObject(BUCKETNAME, key);}/ @Description: 断点上传文件到OSS文件服务器 @param content 文件流 @param key 上传为OSS文件服务器的唯一标识 @param position 位置/public String appendObjectFile(InputStream content,String key,int position,String mimeType) throws Exception{ //进行初始化 init(); // 必须设置ContentLength metasetContentLength(position); metasetContentType(mimeType); metasetCacheControl("no-cache"); metasetContentEncoding("utf-8"); // 上传 LogUtilprintConsoleLog("断点上传到oss服务器开始" + key); AppendObjectRequest appendObjectRequest = new AppendObjectRequest(BUCKETNAME, key, content, meta); appendObjectRequestsetPosition(LongvalueOf(position)); AppendObjectResult appendObjectResult =clientappendObject(appendObjectRequest); LogUtilprintConsoleLog("断点上传到oss服务器结束" + key); return appendObjectResultgetNextPosition()toString();}public static void main(String[] args) {OssManage ossManage = new OssManage();}}
项目需要上传头像,不想存在本地,之前用过阿里云其他产品,这里就使用一下阿里云的oss了,不得不说阿里云的产品使用步骤真的很清晰这里说一下我自己的使用步骤
选择对象存储oss,进行开通
开通不要钱,有一定免费额度
权限可以设置为公共读
其实也就是两步
1引pom
2复制黏贴大法
由于阿里云一些密钥配置和地域结点,bucket等是常量级的,所以我这里抽取出来放在了applicationproperties中, 方便管理 ,数据我手动加密了大家换成自己的即可,
这些配置key=value key都是自己随便写的(也不是,起码可以见名思意),只是为了我们配置的一个配置类可以利用spring的依赖注入填充value而已
说明:
说明:
我们阿里云oss仓库的url是一个咱们的仓库+固定的地域结点值+咱们的文件名字,所以这里为了使上传的文件名字不重复,使用了一个idworker,不知道的可以看一下 Twitter的 Snowflake(雪花算法)
大家搭建完了可以用postman测试一下
ps:如果我们想方便管理或者后期扩展,我们这里也可以引入一个工具
我们可以用这个工具的一个方法String dirpath=new DateTime()tostring("yyyy/MM/dd");将当前的时间转换为yyyy/MM/dd的格式,比如2020/02/03
这样我们上传的文件名字时候可以以这个dirpath作为我们的所在的文件夹名称,以分布式id生成器生成的id为名称存储
下面看一下效果
题主是否想问“阿里oss流式下载内存溢出怎么办”?清理内存。根据查询相关资料显示,内存溢出是当运行程序软件的过程中超出主机内安装的内存所承受大小时的情况,阿里oss流式下载是一种先进的下载方式,在出现内存溢出的情况时,可以选择清理电脑内存,再进行下载。
以上就是关于有谁使用过阿里云oss的吗多文件多图时怎么上传全部的内容,包括:有谁使用过阿里云oss的吗多文件多图时怎么上传、小白使用阿里云的oss实现文件云存储、阿里oss流式下载内存溢出等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)