前端上传的文件,后端将如何进行存储以及回显

这篇具有很好参考价值的文章主要介绍了前端上传的文件,后端将如何进行存储以及回显。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件上传

完成文件上传这个功能需要涉及到两个部分:

  1. 前端程序
  2. 服务器程序

储存方式

文件上传后将如何进行储存

  1. 本地磁盘储存
  2. 云服务器oss储存

项目准备

##后端项目创建

  1. 创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok)
  2. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类
  3. 准备对应的Mapper、Service(接口、实现类)、Controller基础结构

##前端代码准备

便于测试,我们将前端程序直接放在springboot项目工程下的static(静态资 源)目录里面的"upload.html"文件中。

<form action="/upload" method="post" enctype="multipart/form-data">
	姓名: <input type="text" name="username"><br>
    年龄: <input type="text" name="age"><br>
    头像: <input type="file" name="image"><br>
    <input type="submit" value="提交">
</form>

上传文件的原始form表单,要求表单必须具备以下三点(上传文件页面三要素):

  • 表单必须有file域,用于选择要上传的文件

    <input type="file" name="image"/>
    
  • 表单提交方式必须为POST

    通常上传的文件会比较大,所以需要使用 POST 提交方式

  • 表单的编码类型enctype必须要设置为:multipart/form-data

    普通默认的编码格式是不适合传输大型的二进制数据的,所以在文件上传时,表单的编码格式必须设置为multipart/form-data

本地磁盘储存代码实现

  • 首先在服务端定义一个controller类,用来进行文件上传,然后在controller当中定义一个方法来处理/upload 请求
  • 在定义的方法中接收提交过来的数据 (方法中的形参名和请求参数的名字保持一致)
    • 用户名:String name
    • 年龄: Integer age
    • 文件: MultipartFile image(Spring中提供了一个API:MultipartFile,使用这个API就可以来接收到上传的文件)
@RestController
public class UploadController {
    @PostMapping("/upload")
     public Result upload(MultipartFile image) throws IOException {
        //获取原始文件名
         String originalFilename = image.getOriginalFilename();
         //构建新的文件名
         String eatnmae = originalFilename.substring(originalFilename.lastIndexOf("."));
         //引入UUID,防止文件名相同覆盖
         String newFileName = UUID.randomUUID().toString() + eatnmae;
         //将文件储存在服务器的磁盘目录中
         image.transferTo(new File("D:/" +newFileName));
         return Result.success();

注意:如果表单项的名字和方法中形参名一致

云服务器储存代码实现(以阿里云为例)

 文件储存我们使用的是阿里云的OSS对象存储服务。

 前端发送文件上传请求——>服务器接收请求并将接收到的上传文件——>
 上传到oss ,由  oss帮我们存储和管理。
  1. 如何在项目当中来使用云服务完成具体的业务功能

    SDK:Software Development Kit 的缩写,软件开发工具包,包括辅助软件开发的依赖(jar包)、代码示例等,都可以叫做SDK。

    简单说,sdk中包含了我们使用第三方云服务时所需要的依赖,以及一些示例代码。我们可以参照sdk所提供的示例代码就可以完成入门程序。

  2. 阿里云oss对象存储服务具体的使用步骤。

前端多个文件回显,前端,mybatis,java

  • 注册阿里云账户(注册完成后需要实名认证)
  • 注册完账号之后,就可以登录阿里云

前端多个文件回显,前端,mybatis,java

  • 通过控制台找到对象存储OSS服务(如果是第一次访问,还需要开通对象存储服务OSS)

前端多个文件回显,前端,mybatis,java
前端多个文件回显,前端,mybatis,java
前端多个文件回显,前端,mybatis,java

  • 开通OSS服务之后,就可以进入到阿里云对象存储的控制台

前端多个文件回显,前端,mybatis,java

  • 点击左侧的 “Bucket列表”,创建一个Bucket

前端多个文件回显,前端,mybatis,java
3. 参照官方所提供的SDK示例来编写入门程序。文章来源地址https://www.toymoban.com/news/detail-764687.html

  • 找到阿里云OSS提供的SDK示例代码
  • 引入依赖放入项目中的pom.xml依赖配置文件中
    <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.15.1</version>
        </dependency>
        <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>
  • 在项目中新建一个工具Utils类,根据示例代码进行改写
@Component
public class AliOSSUtils {
    private String endpoint = "https://oss-cn-shanghai.aliyuncs.com";
    private String accessKeyId = "LTAI5t9MZK8iq5T2Av5GLDxX";
    private String accessKeySecret = "C0IrHzKZGKqU8S7YQcevcotD3Zd5Tc";
    private String bucketName = "web-framework01";

    /**
     * 实现上传图片到OSS
     */
    public String upload(MultipartFile multipartFile) throws IOException {
        // 获取上传的文件的输入流
        InputStream inputStream = multipartFile.getInputStream();

        // 避免文件覆盖
        String originalFilename = multipartFile.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的路径返回
    }
  • Controller层代码实现
@RestController
public class UploadController {
    @Autowired
    private AliOSSUtils aliOSSUtils;
    @PostMapping("/upload")
     public Result upload(MultipartFile image) throws IOException {
          //调用阿里云OSS工具类,将上传上来的文件存入阿里云
         String url = aliOSSUtils.upload(image);
          //将图片上传完成后的url返回,用于浏览器回显展示
         return Result.success(url);

    }
}

到了这里,关于前端上传的文件,后端将如何进行存储以及回显的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CRM项目为新增用户设置对应的前端校验规则并发送Axios请求到后端将表单数据提交用户信息------CRM项目

    template     el-button type=\\\"primary\\\" @click=\\\"addUser()\\\"新增用户/el-button     el-button type=\\\"danger\\\"批量删除/el-button     el-table         :data=\\\"userList\\\"         style=\\\"width: 100%\\\"         @selection-change=\\\"handleSelectionChange\\\"             !-- 复选框    --         el-table-column type=\\\"selection\\\" width=\\\"33%\\\"

    2024年02月19日
    浏览(29)
  • 前端上传文件夹或文件至后端(SpringBoot)

    前端上传文件夹使用的是 input 标签的file属性,最重要的是 webkitdirectory 这个属性,有了这个属性之后input才可以选择文件夹,但也只能选择文件夹了。 在webkitdirectory的官方文档里有对该属性的说明。 我们可以在这基础上做延伸,做一个表单来上传文件夹: form要加上 enctype=“

    2024年02月05日
    浏览(44)
  • 【文件上传系列】No.2 秒传(原生前端 + Node 后端)

    【文件上传系列】No.1 大文件分片、进度图展示(原生前端 + Node 后端 Koa) 整理的思路是:根据文件的二进制内容生成 Hash 值,然后去服务器里找,如果找到了,说明已经上传过了,所以又叫做秒传(笑) 接着上一章的内容,因为前端和后端的服务都写在一起了,显得有点凌

    2024年02月05日
    浏览(34)
  • 【Java实现文件上传】java后端+vue前端实现文件上传全过程详解(附源码)

    【 写在前面 】其实这篇文章我早就想写了,只是一直被需求开发耽搁,这不晚上刚好下班后有点时间,记录一下。需求是excel表格的上传,这个是很多业务系统不可或缺的功能点,再此也希望您能够读完我这篇文章对文件上传不再困惑。(文件下载见另外一篇) 涉及知识点

    2024年02月06日
    浏览(37)
  • 后端:使用easyExcel实现解析Excel文件读取数据。前端:Excel模板下载、前端上传文件

            本篇是EasyExcel快速入门知识,讲解如何读取Excel文件,对Excel中错误信息如空字符、必填项为空、表格格式校验做到处理 ,并给出了实际项目中示例代码;为什么要使用easyexcel;原因是相比于poi,easyexcel更加轻量级,读取写入API方便,并且在工作中占用内存较小;

    2024年02月05日
    浏览(48)
  • elementUI自定义上传文件 前端后端超详细过程

    下面是使用Element UI自定义上传文件的前后端详细过程: 前端过程: 引入Element UI组件库:在前端项目中引入Element UI库,可以通过CDN引入或者通过npm安装并导入。 创建上传组件:在前端代码中创建一个上传组件,可以使用 el-upload 组件来实现文件上传功能。在组件中设置上传

    2024年02月11日
    浏览(28)
  • elementUI自定义上传文件(前端后端超详细过程)

    elementUI自定义上传文件(前端后端超详细过程) 简介 : 自定义 上传文件并与其他参数一同提交到后台( 主要使用axios ) 简单介绍组件( upload)的属性(熟悉参数的直接略过) 总结elmentUI一下它的使用和常用属性的作用。 主要目的自定义上传文件 2.1 组件代码 2.2 data中的属性

    2024年02月02日
    浏览(26)
  • formData手动上传问题前端如何传递后端如何接收

    参考文章: 解决Current request is not a multipart request axios上传文件错误:Current request is not a multipart reques 之前使用el-upload使用默认action表单提交.前端默认content-type为multipart/form-data.没有问题. 后期渐进式优化.修改为axios+formdata传递内容. Current request is not a multipart request 这个错误是因

    2024年02月03日
    浏览(33)
  • 大文件上传demo,前端基于Uppy,后端基于koa

    文件上传基本上所有的管理系统之类的项目都有这么一个功能。因为使用了 Element ,可以方便的使用 其提供的 Upload 组件,对于普通上传来说基本上就够用了。但是有时候会涉及到大文件上传的需求,这时就会面临一些问题:比如文件上传超时。 自己做的话很麻烦,需要考虑

    2024年02月09日
    浏览(31)
  • 前端vue elementUI upload上传组件封装&多文件上传&进度条,后端servlet request.getPart()接收文件信息

    选中多个文件上传 通过 axios请求 onUploadProgress 方法监听 on-progress on-success 用这两个钩子函数实现进度条 下面有对应的函数。 本文是每个文件一个请求上传 也可以用一个请求上传多个文件,需要将文件遍历添加到 form 表单中,后端用 request.getParts(); 获取集合,有需要的可以改

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包