首页 > 其他分享 >MyBatis-Plus文件上传方法

MyBatis-Plus文件上传方法

时间:2023-07-23 13:34:26浏览次数:33  
标签:文件 String image Plus MyBatis import 上传 OSS

网站的文件上传方法

本地存储上传

// 本地存储方式   MultipartFile接受文件
    @PostMapping("/save")
    public Result save(String username, Integer age, MultipartFile image) throws IOException {
        log.info("文件:{}, {}, {}", username, age, image);

        String or = image.getOriginalFilename();
        // UUID.randomUUID()获取一个独一无二的文件名字   or.substring(or.indexOf(".")获取文件后缀名
        String name = UUID.randomUUID().toString() + or.substring(or.indexOf("."));
        
        File dir = new File("E:/WYW");
        // 判断当前目录是否存在
        if(!dir.exists()) {
            dir.mkdirs();
        }
        // 存储的本地文件目录
        image.transferTo(new File("E:/WYW/" + name));

        return Result.success();
    }

阿里云对象存储OSS实现文件上传

OOS

阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件。

Maven注入依赖

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.15.1</version>
</dependency>

如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.3</version>
</dependency>

Controller层

@PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
        log.info("文件上传:{}", image.getOriginalFilename());

        // 调用阿里云OSS工具类,将上传的文件上传到阿里云
        String url = aliOSSUtils.upload(image);

        // 封装 响应
        return Result.success(url);
    }

AliOSSUtils工具类

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.UUID;

/**
 * 阿里云 OSS 工具类
 */
@Configuration
public class AliOSSUtils {

    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    private String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    private String accessKeyId = "yourAccessKeyId";
    private String accessKeySecret = "yourAccessKeySecret";
    // 填写Bucket名称,例如examplebucket。
    private String bucketName = "examplebucket";

    /**
     * 实现上传图片到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("."));

        //上传文件到 OSS
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        ossClient.putObject(bucketName, fileName, inputStream);

        //文件访问路径
        String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
        // 关闭ossClient
        ossClient.shutdown();
        return url;// 把上传到oss的路径返回
    }

}

UploadController层完整代码

import com.wyw.tlias_w.pojo.Result;
import com.wyw.tlias_w.util.AliOSSUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@Slf4j
@RestController
public class UploadController {

    @Autowired
    private AliOSSUtils aliOSSUtils;

    // 本地存储方式   MultipartFile接受文件
//    @PostMapping("/save")
//    public Result save(String username, Integer age, MultipartFile image) throws IOException {
//        log.info("文件:{}, {}, {}", username, age, image);
//
//        String or = image.getOriginalFilename();
//        // UUID.randomUUID()获取一个独一无二的文件名字   or.substring(or.indexOf(".")获取文件后缀名
//        String name = UUID.randomUUID().toString() + or.substring(or.indexOf("."));
//        // 存储的本地文件目录
//        image.transferTo(new File("E:/WYW/" + name));
//
//        return Result.success();
//    }

    @PostMapping("/upload")
    public Result upload(MultipartFile image) throws IOException {
        log.info("文件上传:{}", image.getOriginalFilename());

        // 调用阿里云OSS工具类,将上传的文件上传到阿里云
        String url = aliOSSUtils.upload(image);
        System.out.println(url);

        // 封装 响应
        return Result.success(url);
    }
}

标签:文件,String,image,Plus,MyBatis,import,上传,OSS
From: https://www.cnblogs.com/bobowww/p/17574908.html

相关文章

  • IntelliJ IDEA配置GitHub上传项目
    保证本地已安装\(Git\)一、配置GitHub账号新建项目,\(File\rightarrowSettings\rightarrowVersion\Control\rightarrowGitHub\)添加\(GitHub\)账号二、配置公钥打开\(GitBash\)输入命令ssh-keygen-t-rsa-C"PersonalEmail",将根据指示到对应的路径(一般是C:\Us......
  • Mybatis练习CRUD
    namespacenamespcae中的包名要和mapper接口中的方法名一致-id:就是对应的namespace中的方法名-resultType:Sql语法执行的返回值-parameter:  参数类型1、select(选择、查询语句)1、编写接口List<User>getUserList();2、编写mapper中sql语句<selectid="getUserLi......
  • Java文件批量上传
    Java文件批量上传在日常的开发过程中,我们常常需要将一批文件批量上传到服务器或其他存储设备上。使用Java语言可以轻松地实现这一功能。本文将介绍如何使用Java实现文件批量上传,并提供相应的代码示例。准备工作在开始编写上传文件的Java代码之前,我们需要进行一些准备工作。首先,......
  • mybatisPlus
    mybatisPlusmybatisplus基础:mybatisspringspringmvc为什么要学习mybatisplus?可以解决大量时间所有的CRUD代码它都可以自动化完成简介简化jdbc操作简化mybatis快速入门网站:快速开始|MyBatis-Plus(baomidou.com)使用第三方依赖导入对应的依赖研究......
  • Web实现浏览器端大文件分块上传
    ​ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。ASP.NET页面设计:TextBox和Button按钮。 ​编辑TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button......
  • Mybatis笔记
    如何获得Mybatis?maven仓库:<!--https://mvnrepository.com/artifact/org.mybatis/mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></depende......
  • 前端实现浏览器端大文件分块上传
    ​  上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败。一开始以为是session过期或者文件大小受系统限制,导致的错误。查看了系统的配置文件没有看到文件大小限制,web.xml中seesiontimeout是30,我把它改成了120。但还是不行,有时候10分钟就崩了。同事说,可能是客户这......
  • B/S实现浏览器端大文件分块上传
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端......
  • Linux文件的上传和下载
    可以通过FinalShell工具,方便的和虚拟机进行数据交换。在FinalShell软件的下方窗体中,提供了Linux的文件系统视图,可以方便的浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑。浏览文件系统,找到合适的目录,将本地电脑的文件拖入FinalShell文件视图,即可方便的上传数据到......
  • springboot学习之十三(druid+mybaits plus)
    Druid介绍Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他例如DBCP、C3P0、BoneCP、Proxool、JBossDataSource等连接池,而且Druid已经在阿里巴巴部署了超过600个应用,通过了极为严格的考验,这才收获了大家的青睐! Springboot集成......