spring文件上传到OSS文件服务器

目录

1.普通的文件上传到OSS文件服务器

1.1 阿里云界面操作

1.2 引入阿里云的OSS依赖

1.3 OOS代码的书写

2.elementui 异步上传OSS服务器

2.1 实现界面

2.2 前端

2.2 封装一个工具类

 2.3 创建一个实体类

2.4 创建一个controller


1.普通的文件上传到OSS文件服务器

1.1 阿里云界面操作

 

1.2 引入阿里云的OSS依赖

<!--所使用的是1.8的JDK,要是1.9及以上要换依赖-->
<dependency>
     <groupId>com.aliyun.oss</groupId>
     <artifactId>aliyun-sdk-oss</artifactId>
     <version>3.10.2</version>
   </dependency>

1.3 OOS代码的书写

public class UploadFile {
    public static String upload(MultipartFile multipartFile){
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。

        String accessKeyId = "#填写自己的账户";

        String accessKeySecret = "#填写自己的密钥";

        // 填写Bucket名称,例如examplebucket。
        String bucketName = "#自己的项目名称";
        // 你上传到oss后的名字 会根据日期帮你创建文件夹
        String objectName =fileName(multipartFile);
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
            InputStream inputStream =multipartFile.getInputStream();
            // 创建PutObject请求。
            ossClient.putObject(bucketName, objectName, inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        String url="https://"+bucketName+"."+endpoint+"/"+objectName;
        return url;
    }
    private  static String fileName(MultipartFile myFile){
        Calendar calendar=Calendar.getInstance();
       String name= calendar.get(Calendar.YEAR)+"/"+(calendar.get((Calendar.MONTH))+1)+"/"+
                calendar.get(Calendar.DATE)+"/"+ UUID.randomUUID().toString().replace("-","")
                +myFile.getOriginalFilename();
       return name;
    }
}

2.elementui 异步上传OSS服务器

2.1 实现界面

 

2.2 前端

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>阿里云界面</title>
    <link type="text/css" rel="stylesheet"  href="css/index.css">
    <script type="text/javascript" src="js/qs.min.js"></script>
    <script type="text/javascript" src="js/axios.min.js"></script>
    <script type="text/javascript" src="js/vue.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <style>
        .avatar-uploader .el-upload {
            border: 1px dashed #d9d9d9;
            border-radius: 6px;
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }
        .avatar-uploader .el-upload:hover {
            border-color: #409EFF;
        }
        .avatar-uploader-icon {
            font-size: 28px;
            color: #8c939d;
            width: 178px;
            height: 178px;
            line-height: 178px;
            text-align: center;
        }
        .avatar {
            width: 178px;
            height: 178px;
            display: block;
        }
    </style>
</head>
<body>
<div id="con">
    <el-form  label-width="80px" :model="UserForm">
        <el-form-item label="账号">
            <el-input v-model="UserForm.name"></el-input>
        </el-form-item>
        <el-form-item label="密码">
            <el-input v-model="UserForm.password"></el-input>
        </el-form-item>
        <el-form-item label="电话">
            <el-input v-model="UserForm.phone"></el-input>
        </el-form-item>
        <el-form-item>
            <el-upload
                    class="avatar-uploader"
                    action="aliLoad"
                    :show-file-list="false"
                    :on-success="handleAvatarSuccess"
                    :before-upload="beforeAvatarUpload">
                <img v-if="UserForm.imageUrl" :src="UserForm.imageUrl" class="avatar">
                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
            </el-upload>
        </el-form-item>
        <el-form-item>
            <el-button type="primary" @click="onSubmit">提交</el-button>
        </el-form-item>
    </el-form>
</div>
</body>
<script>
    var app=new Vue({
        el:"#con",
        data:{
            UserForm:{
                imageUrl:''
            },
        },
        methods:{
            handleAvatarSuccess(res) {
                console.log(res)
                this.UserForm.imageUrl = res.date;
            },
            beforeAvatarUpload(file) {
                const isJPG = file.type === 'image/jpeg';
                const isLt2M = file.size / 1024 / 1024 < 2;

                if (!isJPG) {
                    this.$message.error('上传头像图片只能是 JPG 格式!');
                }
                if (!isLt2M) {
                    this.$message.error('上传头像图片大小不能超过 2MB!');
                }
                return isJPG && isLt2M;
            },
            onSubmit:function (){
                axios.post("aliLoad01",this.UserForm).then(function (result) {
                    console.log(result)
                })
            }
        }
    })
</script>
</html>

2.2 封装一个工具类

public class UploadFile {
    public static String upload(MultipartFile multipartFile){
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。

        String accessKeyId = "#填写自己的ID";

        String accessKeySecret = "填写自己的密钥";

        // 填写Bucket名称,例如examplebucket。
        String bucketName = "#填写自己的工程名";

        // 你上传到oss后的名字 会根据日期帮你创建文件夹
        String objectName =fileName(multipartFile);
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        try {
            InputStream inputStream =multipartFile.getInputStream();
            // 创建PutObject请求。
            ossClient.putObject(bucketName, objectName, inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        String url="https://"+bucketName+"."+endpoint+"/"+objectName;
        return url;
    }
    private  static String fileName(MultipartFile myFile){
        Calendar calendar=Calendar.getInstance();
       String name= calendar.get(Calendar.YEAR)+"/"+(calendar.get((Calendar.MONTH))+1)+"/"+
                calendar.get(Calendar.DATE)+"/"+ UUID.randomUUID().toString().replace("-","")
                +myFile.getOriginalFilename();
       return name;
    }
}

 2.3 创建一个实体类

entity下

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserALi {
    private String name;
    private String password;
    private String phone;
    private String imageUrl;
}

2.4 创建一个controller

@Controller
public class AliYun02 {

    @RequestMapping("/aliLoad")
    @ResponseBody
    public CommonResult testAli(MultipartFile file){
       return CommonResult.success(UploadFile.upload(file));
    }


    @RequestMapping("/aliLoad01")
    @ResponseBody
    public CommonResult testAli(@RequestBody UserALi userALi){
            return CommonResult.success(userALi);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题属于技术问题,我可以为您提供技术支持。您需要使用阿里云的 OSS SDK 完成文件上传操作,并将上传后的文件链接保存到数据库中。以下是一个示例代码: ``` // 首先引入阿里云 OSS SDK 的依赖包 import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import java.io.ByteArrayInputStream; // 然后在 Spring Boot 中定义上传文件的方法 public String uploadFileToOSS(byte[] fileBytes, String fileName) { // 配置您的 OSS 接入信息 String endpoint = "yourEndpoint"; String accessKeyId = "yourAccessKeyId"; String accessKeySecret = "yourAccessKeySecret"; String bucketName = "yourBucketName"; // 创建 OSSClient 实例 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 创建 ByteArrayInputStream 对象,并设置上传的内容 ByteArrayInputStream inputStream = new ByteArrayInputStream(fileBytes); // 创建上传文件的 ObjectMetadata 对象,并设置文件的 Content-Type 和 Content-Length 属性 ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); metadata.setContentLength(fileBytes.length); // 创建 PutObjectRequest 对象,并设置 Bucket 名称和文件名称 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileName, inputStream, metadata); // 上传文件 PutObjectResult result = ossClient.putObject(putObjectRequest); // 关闭 OSSClient ossClient.shutdown(); // 返回上传后的文件链接 return "https://" + bucketName + "." + endpoint + "/" + fileName; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值