当前位置: 首页 > news >正文

java文件上传以及使用阿里云OSS

JavaWeb

    • 文件上传
      • 本地存储
      • 阿里云OSS
        • 配置文件
      • yml配置文件


文件上传

前端页面三要素:
表单项type=“file”
表单提交方式post
表单的enctype属性multipart/form-data

本地存储

保证上传的文件不重复

        //获取原始文件名String originalFilename = image.getOriginalFilename();//构造唯一的文件名(不能重复) --uuid(通用唯一标识码) 7b708925-8440-4069-b5da.txtint index = originalFilename.lastIndexOf(".");String extname = originalFilename.substring(index);String newFileName = UUID.randomUUID().toString() + extname;log.info("新的文件名:{}",newFileName);//将文件存储在服务器的磁盘目录中image.transferTo(new File("G:\\java\\"+newFileName));

在SpringBoot,文件默认单个最大为1M.如果要上传大文件,可以进行以下配置:

#配置单个文件上传大小限制
spring.servlet.multipart.max-file-size=10MB#配置单个请求最大大小限制(一个请求可传多个文件)
spring.servlet.multipart.max-request-size=100MB

由于本地存储无法在客户端直接访问磁盘易满、易坏,
所以我们现在使用云服务器来存储

阿里云OSS

云存储服务,你可以通过网络随时存储各种文件。
在这里插入图片描述

        <!--阿里云OSS依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version></dependency>

根据阿里云OSS提供的文档,写一个阿里云 OSS 工具类

package com.w.utils;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;/*** 阿里云 OSS 工具类*/@Component
public class AliOSSUtils {private String endpoint = "https://oss-cn-beijing.aliyuncs.com";private String accessKeyId = "LTAI5t66tmegXDdb9NzyUtho";private String accessKeySecret = "JmzMGZK6FqJPBY21t3oYVvAyFRZ0m1";private String bucketName = "swmdys-tlias";/*** 实现上传图片到OSS*/public String upload(MultipartFile file) throws IOException {// 获取上传的文件的输入流InputStream inputStream = file.getInputStream();// 避免文件覆盖String originalFilename = file.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上传文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件访问路径String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 关闭ossClientossClient.shutdown();return url;// 把上传到oss的路径返回}}

把本地存储的注释掉改为存入阿里云

    @Autowiredprivate AliOSSUtils aliOSSUtils;@PostMapping("/upload")public Result upload(MultipartFile image) throws IOException {log.info("文件上传,文件名:{}", image.getOriginalFilename());//调用阿里云OSS工具类进行文件上传String url = aliOSSUtils.upload(image);log.info("文件上传完成,文件访问的url:{}", url);return Result.success(url);}
配置文件

可以直接把阿里云OSS连接需要参数写下springBoot配置文件中

#阿里云OSS配置
aliyun.oss.endpoint=https://oss-cn-beijing.aliyuncs.com
aliyun.oss.accessKeyId=LTAI5t66tmegXDdb9NzyUtho
aliyun.oss.accessKeySecret=JmzMGZK6FqJPBY21t3oYVvAyFRZ0m1
aliyun.oss.bucketName=swmdys-tlias
    @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;

yml配置文件

在实际开发中我们springBoot配置文件一般不用.properties,而是使用.yml

文件优先级
application.properties > application.yml
所以只写一个application.yml就行了

# bootstrap.properties > bootstrap.yml > application.properties > application.ymlspring:#数据库连接信息datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3307/tliasusername: rootpassword: 123456#文件上传的配置servlet:multipart:max-file-size: 10MBmax-request-size: 100MB
#Mybatis配置
mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true#阿里云OSS
aliyun:oss:endpoint: https://oss-cn-hangzhou.aliyuncs.comaccessKeyId: LTAI4GCH1vX6DKqJWxd6nEuWaccessKeySecret: yBshYweHOpqDuhCArrVHwIiBKpyqSLbucketName: web-tlias
http://www.lryc.cn/news/247260.html

相关文章:

  • 相关性分析和作图
  • AlphaFold的原理及解读
  • 【ChatGLM3-6B】Docker下快速部署
  • 两部手机数据传输后备忘录不见了怎么回事
  • 【Unity入门】LayerMask小结
  • mysql按年、季度、月,统计
  • Python的换行和转义:深入理解代码排版与字符串处理
  • dart多线程双向通信的案例----【小学4年级课程】
  • 每日一练:简易计算器
  • Jmeter和Testlink自动化测试框架研究与实施
  • MethodArgumentNotValidException 与 ConstraintViolationException
  • 【数学】旋转矩阵
  • Python与设计模式--中介者模式
  • 后台管理系统开源项目
  • 电子印章管理系统:是什么、3个平台推荐
  • 现货黄金区间交易的两个要点
  • 安卓底部导航栏BottomNavigationView
  • rust每日一库 rand 生成随机数
  • Unity SRP 管线【第三讲:URP 光照】
  • 怎么更新BI报表数据?问我就对了
  • SpringBoot 入门学习
  • 高等数学零基础篇复习笔记
  • CentOS 系列:CentOS 7文件系统的组成
  • String转Date,Date转String
  • 大坝安全监测的内容及作用
  • Maven——Maven发展历程
  • Python与设计模式--迭代器模式
  • 【NGINX--8】HTTP/2
  • webpack项目工程初始化
  • 08-学成在线项目中统一异常处理的规范