首页 > 其他分享 >OSS简单文件上传和本地存储上传

OSS简单文件上传和本地存储上传

时间:2023-06-12 21:45:00浏览次数:65  
标签:文件 存储 String OSS import 上传 image

网站的文件上传方法

本地存储上传

// 本地存储方式   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();
    }

阿里云对象存储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);
    }
}

转载:https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.84778.0.0.1dfd70a8oq7Nd3

标签:文件,存储,String,OSS,import,上传,image
From: https://www.cnblogs.com/wywbo/p/17476177.html

相关文章

  • 数据存储的两种方式:cookie和webStorage存储
    一、sessionstorage(会话存储)1、添加数据:SessionStorage.setItem('key','value');该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。2、获取数据:SessionStorage.getItem('key');该方法接受一个键名作为参数,返回键名对应的值。如果获取不到......
  • Hbase的JavaAPI和数据存储
    导入Maven依赖<dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.6</version></dependency><dependen......
  • 浪潮信息四大存储解决方案,助力高校构建新一代产教融合数据底座
    加快教育现代化,办好人民满意的教育,是新时代赋予教育的重要使命,更成为教育改革发展的方向引领。浪潮信息依托完善的存储软硬件一体化解决方案及优质的综合服务能力,始终致力于服务中国教育信息化建设,从产教研融合、智慧校园两个层面深入,构建多位一体的智慧教育,打造“产教融合生态圈”......
  • 对象存储服务-Minio
    对象存储服务(ObjectStorageService,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。对象存储服务在项目开发过程中,我们会产生大量的对象数据,包括:日志文件,数据库脚本文件、安装包,容器镜像,图......
  • KingbaseES数据库改写SQL Server数据库CROSS APPLY和OUTER APPLY
     一、功能介绍:CROSSAPPLY和OUTERAPPLY是SQLServer中的一种连接操作,类似于JOIN语句可以将一张表与一个表函数或一个子查询进行关联。表函数是一种返回一个表类型的数据的函数,子查询是一个嵌套在外部查询中的查询。它们可以与表值函数或子查询配合使用,返回左表和右表的匹配结......
  • 上传图片
     以此方法来确定上传的文件夹地址。/***文件上传配置类,结合properties配置*最大单个文件上传10MB*总数据最大100MB**/@ConfigurationpublicclassFileUploadConfig{@BeanpublicMultipartConfigElementmultipartConfigElement(){MultipartConfigFa......
  • php文件上传之白名单00截断实验
    %00截断介绍:0x00,%00,/00在url中%00表示ascll码中的0,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。但是所谓的if拦截仍会读取后面的后缀达到绕过白名单的效果。当前版本环境:PHP版本低于5.4.24,或者PHP版本在5.5.8到5.6.0之间,且GPC......
  • SQL Server 只读账号/只读登录名可查看存储过程及函数权限
    USETCsfc--数据库名)GRANTVIEWDefinitionTOtestUser--开启,只读账户queryuser在TCsfc数据库中可查看存储过程及标量值函数的权限USETCsfc--(数据库名)REVOKEVIEWDefinitionTOtestUser--撤销,只读账户queryuser在TCsfc数据库中可查看存储过程及标量值函数的权限......
  • 北京市政百姓信件分析---热词云以及存储关系图谱
    使用neo4j数据库进行存储关系的展示   热词云    importjsonimportmatplotlib.pyplotaspltimportreimportjiebafrompy2neoimportGraph,Node,Relationship,NodeMatcherfromwordcloudimportWordCloudfromcollectionsimportCounterimport......
  • 云环境下的存储服务类型与技术
    一、存储服务的类型存储服务的类型根据数据类型的不同,一般分为块存储、文件存储和对象存储三类。块存储基于传统的磁盘阵列实现,将存储区域划分成固定大小的块,以卷的方式挂载到主机操作系统后,操作系统可将其格式化成文件系统,或以裸数据的方式作为数据库的存储。块存储方式不存在数据......