阿里云服务器上传文件方法(向云服务器传输文件步骤)
程序员文章站
2023-12-09 19:17:57
1. 准备工作:一、首先登录阿里云oss对象存储控制台创建一个bucket作为你的存储空间。二、创建access keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文档,...
1. 准备工作:
一、首先登录阿里云oss对象存储控制台创建一个bucket作为你的存储空间。
二、创建access keyan按要求创建进行,这里的方法步骤我就不展现出来了,你们可以自行查询阿里云文档,这个获取值本身就不难。
重点:记下你的accesskey id、accesskey secret以及你刚才创建的buacket名字bucketname。
2. 配置:
在pom里引入oss要用的依赖
<dependency>
<groupid>com.aliyun.oss</groupid>
<artifactid>aliyun-sdk-oss</artifactid>
<version>3.10.2</version>
</dependency>
在application.yml里面添加配置文件
# 定义的端口号
server:
port: 8080
aliyun:
oss:
#yourendpoint填写bucket所在地域对应的endpoint,可在创建好的bucket概况页查看。
endpoint: oss-cn-chengdu.aliyuncs.com # 以成都为例,endpoint填写为https://oss-cn-chengdu.aliyuncs.com
#阿里云账号accesskey拥有所有api的访问权限,风险很高。强烈建议您创建并使用ram用户进行api访问或日常运维,请登录ram控制台创建ram用户
accesskeyid: ********** # 阿里云账号accesskey里所对应的accesskey id
accesskeysecret: ********** # 阿里云账号accesskey里所对应的accesskey secret
bucketname: ********** # oss对象存储空间名
3. 详细代码:
第一步:创建一个service包,新建一个aliyunossservice.java
import org.springframework.stereotype.service;
import org.springframework.web.multipart.multipartfile;
import java.util.map;
@service
public interface aliyunossservice {
map<string, object> upload(multipartfile file, string filename);
}
第二步:在service包里创建一个impl包,新建一个aliyunossserviceimpl.java
import com.system.demo.service.aliyunossservice;
import com.system.demo.util.fileuploadutil;
import org.springframework.stereotype.service;
import org.springframework.web.multipart.multipartfile;
import javax.annotation.resource;
import java.util.hashmap;
import java.util.map;
@service("aliyunossservice")
public class aliyunossserviceimpl implements aliyunossservice {
@resource
private fileuploadutil fileuploadutil;
@override
public map<string, object> upload(multipartfile file, string filename){
//定义一个目录(这里的目录可根据自己实际情况自己拼接定义)
string path = "a"; //我这里就随便定义一个a文件夹
//拼接,这里将路径和文件名拼接在了一起
filename = path + "/" +filename;
map<string, object> map =new hashmap<>();
map.put("code", 200);
map.put("msg", "查询成功");
map.put("data", this.fileuploadutil.upload(file, filename));
return map;
}
}
第三步:创建一个util包,新建一个fileuploadutil.java
import com.aliyun.oss.oss;
import com.aliyun.oss.ossclientbuilder;
import com.aliyun.oss.model.objectmetadata;
import org.springframework.beans.factory.annotation.value;
import org.springframework.stereotype.component;
import org.springframework.web.multipart.multipartfile;
import java.io.ioexception;
import java.io.inputstream;
@component
public class fileuploadutil {
@value("${aliyun.oss.endpoint}")
private string endpoint;
@value("${aliyun.oss.accesskeyid}")
private string accesskeyid;
@value("${aliyun.oss.accesskeysecret}")
private string accesskeysecret;
@value("${aliyun.oss.bucketname}")
private string bucketname;
public string upload(multipartfile file, string filename){
// 写入文件
try {
//获取上传的输入流
inputstream inputstream = file.getinputstream();
//设置访问地址是默认是预览图片
objectmetadata meta = new objectmetadata();
meta.setcontenttype("image/jpg");
// 创建ossclient实例
oss ossclient = new ossclientbuilder().build(endpoint, accesskeyid, accesskeysecret);
/*
调用oss上传到阿里云对象存储oss----bucket存储空间
第一个参数 bucket名称
第二个参数 文件名称
第三个参数 输入流
第四个参数 文件类型
*/
ossclient.putobject(bucketname, filename, inputstream, meta);
// 删除文件。如需删除文件夹,请将objectname设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
//ossclient.deleteobject(bucketname, "a/");
// 关闭ossclient。
ossclient.shutdown();
//上传成功后获取文件路径
string url = "https://" + bucketname + "." + endpoint + "/"+ filename;
return url;
} catch (ioexception e) {
e.printstacktrace();
}
return null;
}
}
第四步:定义接口创建一个controller包,新建一个fileupload.java
import com.system.demo.service.impl.aliyunossserviceimpl;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.restcontroller;
import org.springframework.web.multipart.multipartfile;
import javax.annotation.resource;
import java.util.map;
@restcontroller
@requestmapping("oss")
public class fileupload {
@resource
private aliyunossserviceimpl aliyunossserviceimpl;
@requestmapping(value = "fileoss", method = requestmethod.post)
public map<string, object> uploadossfile(multipartfile file, string filename){
return this.aliyunossserviceimpl.upload(file, filename);
}
}
4. 测试:
首先运行启动类,在postman进行测试
选择请求方式:post
请求路径:
localhost:8080/oss/fileoss
选择body–>form-data
—–第一列数据:key为file,选择类型为file,添加value为自己想要上传的文件;
—–第二列数据:key为filename,选择类型为text,添加value为的文件名
如下图:
添加完成后,点击send,发起请求,等待返回数据,返回的json格式中data所对应的地址,为该文件的预览地址。
同时,你也可在你的oss里面查看你的文件。
以上就是springboot整合阿里云oss对象存储实现文件上传的详细内容
推荐阅读
-
阿里云服务器上传文件方法(向云服务器传输文件步骤)
-
Mac本地文件上传到CentOS云服务器方法
-
Windows本地环境和Linux腾讯云服务器之间传输文件的方法
-
桌面远程连接阿里云服务器(windows)后丧失了双向文件复制粘贴功能的解决方案(第一条博客!)
-
Java下载https文件并上传阿里云oss服务器
-
Linux使用scp远程传输命令进行服务器文件互传(阿里云服务器)
-
云服务器tomcat配置虚拟路径映射,使上传文件与服务器及工程文件分离开
-
阿里云 轻量应用服务器 上传一个HTML文件或者jsp文件 通过外网IP访问
-
解决windows service 2012阿里云服务器在搭建mysql时缺少msvcr100.dll文件的问题
-
前端上传pdf文件到阿里云服务器的实现方法