1、注册自己的阿里云账号

2、登录账号以后,进入主页面搜索“对象存储OSS

然后可以看到如下界面

  • 立即购买,自己学习使用可以选择购买最小的存储空间,半年即可
  • 管理控制台,购买了存储空间以后可以OSS控制台
    如果不购买依旧可以使用OSS,但是会按量付费,建议购买。

3、进入控制台

进入以后,选择左侧菜单栏的Bucket列表这一项,然后点击创建Bucket

  • Bucket的名字需要全局唯一,地域建议选择距离自己近的地域,提高访问速度,其他选项选择默认选项即可,最后点击确定。

4、进入自己刚创建好的Bucket

点击你刚刚创建好的Bucket的名字,进入Bucket管理界面,然后选择文件管理,就可以上传文件了

  • 关于图片,如果需要上传图片,并且在你的HTML页面通过<img>标签访问,那么你需要在权限管理中将你的Bucket ACL设置为公共读,此时你图片详情里面的URL会发生更改,这时你就可以在你的页面看到图片了。

5、Java整合文件上传下载

本人已经写好了基本文件上传的工具类,包含文件的上传下载与删除,如果需要其他功能,可以自行查阅API。

  • 使用此工具类需要提前导入相应的依赖,依赖坐标如下
    <!--阿里云OOS SDK依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.0</version></dependency>
  • 工具类如下,工具类的名字为OSSUploadFileUtils,如果需要自己取名字,那么工具类中downloadFile(String filename,String filePath)方法需要更改。
ossClient.getObject(new GetObjectRequest(bucketName, filename).<GetObjectRequest>withProgressListener(new OSSUploadFileUtils()),new File(filePath));

其中的new OSSUploadFileUtils()改为new你自己的类名

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.event.ProgressEvent;
import com.aliyun.oss.event.ProgressEventType;
import com.aliyun.oss.event.ProgressListener;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;import java.io.*;/*** @author c先生* @date 2022年09月07日 下午 8:10:51* @describe*/public class OSSUploadFileUtils implements ProgressListener {// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。private static final String accessKeyId = "LTAI5tEWrVLBY1KKw6qMjn4J";private static final String accessKeySecret = "NfqXkkbwJ8kaPJl8TLX6eiS9cbCBW3";// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。private static final String endpoint = "https://oss-cn-beijing.aliyuncs.com";// 填写Bucket名称,例如examplebucket。private static final String bucketName = "lx-dmeo";/*上传下载进度条参数*/private long bytesRead = 0;private long totalBytes = -1;private boolean succeed = false;/*** 通过InputStream输入流的方式上次文件* @param fileName  上传到服务器的文件名* @param inputStream  文件的输入流*/public static void uploadFile(String fileName,InputStream inputStream){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 创建PutObject请求。ossClient.putObject(bucketName, fileName, inputStream);} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}}/*** 从阿里云下载文件到本地* @param filename  阿里云对象存储的文件的名字* @param filePath  下载到本地的路径,路径包括文件名字* @return* @throws IOException*/public static void downloadFile(String filename,String filePath) throws IOException {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 下载Object到本地文件,并保存到指定的本地路径中。如果指定的本地文件存在会覆盖,不存在则新建。// 如果未指定本地路径,则下载后的文件默认保存到示例程序所属项目对应本地路径中。ossClient.getObject(new GetObjectRequest(bucketName, filename).<GetObjectRequest>withProgressListener(new OSSUploadFileUtils()),new File(filePath));} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}}/*** 上传下载进度条的方法* @param progressEvent*/public void progressChanged(ProgressEvent progressEvent) {long bytes = progressEvent.getBytes();ProgressEventType eventType = progressEvent.getEventType();switch (eventType) {case TRANSFER_STARTED_EVENT:System.out.println("开始下载......");break;case RESPONSE_CONTENT_LENGTH_EVENT:this.totalBytes = bytes;System.out.println(this.totalBytes + " bytes in total will be downloaded to a local file");break;case RESPONSE_BYTE_TRANSFER_EVENT:this.bytesRead += bytes;if (this.totalBytes != -1) {int percent = (int)(this.bytesRead * 100.0 / this.totalBytes);System.out.println(bytes + " bytes have been read at this time, 下载进度: " +percent + "%(" + this.bytesRead + "/" + this.totalBytes + ")");} else {System.out.println(bytes + " bytes have been read at this time, download ratio: unknown" +"(" + this.bytesRead + "/...)");}break;case TRANSFER_COMPLETED_EVENT:this.succeed = true;System.out.println("下载成功! " + this.bytesRead + " bytes have been transferred in total");break;case TRANSFER_FAILED_EVENT:System.out.println("下载失败! " + this.bytesRead + " bytes have been transferred");break;default:break;}}public boolean isSucceed() {return succeed;}/*** 删除云端文件* @param fileName  要删除的文件名字*/public static void deleteFile(String fileName){// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 删除文件或目录。如果要删除目录,目录必须为空。ossClient.deleteObject(bucketName, fileName);} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}}
}

阿里云OSS对象存储(文件上传与下载)宝宝级教程相关推荐

  1. SpringBoot整合阿里云OSS,支持文件上传、下载、删除、加签等操作

    首先附上OSS基本介绍和官方文档链接:https://help.aliyun.com/product/31815.html?spm=ata.21736010.0.0.25d67536bR4cly 另外 ...

  2. 阿里云OSS对象存储服务上传失败问题之一

    简介: OSS是阿里云提供一个对象存储服务,有着稳定高效的特点,但在操作时有些问题还是必须要注意一下的 今天在进行上传头像的操作时,发生了一个OSS连接时出现的问题,导致头像上传失败,问题的样式如下图 ...

  3. 阿里云OSS对象存储 , js 上传文件

    function uploadFile2(){// 上传后的文件路径和文件名var fileName = "20220420/使用ajax上传图片.jpg";// 获取oss上传令 ...

  4. 微信头像下载并上传到阿里云OSS,PHP文件上传到阿里云OSS简单代码(OSS文件上传,微信头像下载,CURL下载文件,微信头像链接过期)

    (就这么个小事,有多少公司多少项目没做到!!) 微信公众号项目,后端获取到授权用户的微信头像后,要自行下载保存,不下载的话,微信返回的头像链接会在一段时间后过期,无法访问! 下面是我写的两个简单实用方 ...

  5. python程序发布到阿里云云服务器_Python实现阿里云服务器里的文件上传与下载

    Python实现阿里云服务器里的文件上传与下载 018.4.15 背景: 老实说,因为现实的各种原因造成电脑换来换去是可能出现的事情,但是电脑能换,电脑里的环境却不能换.我就曾在三个电脑里各自安装了虚 ...

  6. 阿里云OSS直传多文件上传遇到的问题及解决方案

    本人萌新,刚实习不久,在上一个项目需求中,需要用到阿里云的文件直传服务,通过各种找,最终找了一个比较靠谱的demo,基于plupload插件的一个前端文件上传插件.然后自己再进行了二次封装,并对其中的 ...

  7. 阿里云oss简单的文件上传步骤

    1.登录阿里云然后点击开通 2.同意协议点击开通 3.创建存储容器 4.导入maven坐标 <dependency><groupId>com.aliyun.oss</gr ...

  8. 【Typora图床设置】Typora图片上传和阿里云OSS对象存储

    问题描述 因为Typora是纯文本编辑器,所以无法导入图片,但是可以显示图片.换句话说,Typora文档中保存的图片实际上是图片的存储地址,Typora会根据这个地址来显示图片.我们在使用Typora ...

  9. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

  10. 阿里云OSS对象存储-图文详解

    阿里云OSS对象存储 认识OSS 一.创建Bucket 二.后台服务接口编写 三.接口测试 认识OSS 在实际的项目中,经常要用到上传图片的地方,阿里云的OSS对象存储,可以很好的将我们上传的图片存储 ...

最新文章

  1. 那些年,面试被虐过的红黑树
  2. 安装 Docker 一
  3. 正则表达式和re模块知识点汇总
  4. 吴恩达登录知乎,亲自回答如何系统学习机器学习
  5. matlab利用霍夫,基于matlab的霍夫变换
  6. 华为的鸿蒙系统是海思_死心了!华为鸿蒙系统首款终端确认,不是手机
  7. 5m独享网站服务器,您真的需要独享5m云服务器吗?一文让您了解云服务器带宽计算方法,从此不再花冤枉钱...
  8. week one(1)—What is machine learning?
  9. netperf网卡测速ubuntu linux 环境下测硬件网卡速度
  10. 洛谷3823 [NOI2017] 蚯蚓排队 【哈希】
  11. 目前淘宝客单价比较高的商品怎么引流
  12. 去健身房健身戴什么耳机好、最适合运动健身的健身房耳机推荐
  13. 阿里入局,通义千问备受期待
  14. 原生JS使用input上传图片
  15. 微信版“花呗”全面开放,人人都可以申请!
  16. C语言 sigaction函数捕捉信号 注册回调函数
  17. 学生类定义(类和对象) Python
  18. AI又进化了,突破性革命来了
  19. 屡禁不止:一个敢于将自己注入到杀毒软件中的斗士
  20. 语音识别之HTK入门(六)——HERest训练模型

热门文章

  1. 解决华为虚拟键盘问题
  2. 时之扉手游如何在电脑上玩 时之扉手游模拟器教程
  3. PAT乙级 1048. 数字加密(20)
  4. 《我们与恶的距离》引发媒体反思:假新闻抢热点,机器学习能做些什么?
  5. vs2010下载地址和正版CDKEY
  6. ios更新显示“已请求更新“但是没反应,最佳实践
  7. LINUX 宏__define_initcall(level,fn)的作用 和 do_initcalls()
  8. 王坚:我为什么反对有些企业的“去IOE”运动?
  9. 计算机一级考试说说,考试说说心情汇总81句 关于考试的说说
  10. java输入和输出路径_Java输入输出