欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

阿里云服务器上传文件方法(向云服务器传输文件步骤)

程序员文章站 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对象存储实现文件上传的详细内容