首页 > 编程语言 >Javaweb之SpringBootWeb案例文件上传的详细解析

Javaweb之SpringBootWeb案例文件上传的详细解析

时间:2024-09-11 21:51:49浏览次数:14  
标签:文件 Javaweb form upload SpringBootWeb 表单 编辑 上传


 2. 文件上传

在我们完成的新增员工功能中,还存在一个问题:没有头像(图片缺失)

Javaweb之SpringBootWeb案例文件上传的详细解析_文件上传

编辑

上述问题,需要我们通过文件上传技术来解决。下面我们就进入到文件上传技术的学习。

文件上传技术这块我们主要讲解三个方面:首先我们先对文件上传做一个整体的介绍,接着再学习文件上传的本地存储方式,最后学习云存储方式。

接下来我们就先来学习下什么是文件上传。

2.1 简介

文件上传,是指将本地图片、视频、音频等文件上传到服务器,供其他用户浏览或下载的过程。

文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。

Javaweb之SpringBootWeb案例文件上传的详细解析_文件上传_02

编辑

在我们的案例中,在新增员工的时候,要上传员工的头像,此时就会涉及到文件上传的功能。在进行文件上传时,我们点击加号或者是点击图片,就可以选择手机或者是电脑本地的图片文件了。当我们选择了某一个图片文件之后,这个文件就会上传到服务器,从而完成文件上传的操作。

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

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

我们先来看看在前端程序中要完成哪些代码:

<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

前端页面的3要素我们了解后,接下来我们就来验证下所讲解的文件上传3要素。

Javaweb之SpringBootWeb案例文件上传的详细解析_文件上传_03

编辑

下面我们来验证:删除form表单中enctype属性值,会是什么情况?

  1. 在IDEA中直接使用浏览器打开upload.html页面
  2. 编辑
  3. 选择要上传的本地文件
  4. 编辑
  5. 点击"提交"按钮,进入到开发者模式观察
  6. 编辑

Javaweb之SpringBootWeb案例文件上传的详细解析_表单_04

编辑

我们再来验证:设置form表单中enctype属性值为multipart/form-data,会是什么情况?

<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>

Javaweb之SpringBootWeb案例文件上传的详细解析_表单_05

编辑

知道了前端程序中需要设置上传文件页面三要素,那我们的后端程序又是如何实现的呢?

  • 首先在服务端定义这么一个controller,用来进行文件上传,然后在controller当中定义一个方法来处理/upload 请求
  • 在定义的方法中接收提交过来的数据 (方法中的形参名和请求参数的名字保持一致)
  • 用户名:String name
  • 年龄: Integer age
  • 文件: MultipartFile image

Spring中提供了一个API:MultipartFile,使用这个API就可以来接收到上传的文件

Javaweb之SpringBootWeb案例文件上传的详细解析_表单_06

编辑

问题:如果表单项的名字和方法中形参名不一致,该怎么办?

public Result upload(String username,                     Integer age,                     MultipartFile file) //file形参名和请求参数名image不一致

解决:使用@RequestParam注解进行参数绑定

public Result upload(String username,                     Integer age,                     @RequestParam("image") MultipartFile file)

UploadController代码:

@Slf4j
@RestController
public class UploadController {

    @PostMapping("/upload")
    public Result upload(String username, Integer age, MultipartFile image)  {
        log.info("文件上传:{},{},{}",username,age,image);
        return Result.success();
    }

}

后端程序编写完成之后,打个断点,以debug方式启动SpringBoot项目

Javaweb之SpringBootWeb案例文件上传的详细解析_表单_07

编辑

打开浏览器输入:http://localhost:8080/upload.html

Javaweb之SpringBootWeb案例文件上传的详细解析_表单_08

编辑

通过后端程序控制台可以看到,上传的文件是存放在一个临时目录

Javaweb之SpringBootWeb案例文件上传的详细解析_文件上传_09

编辑

打开临时目录可以看到以下内容:

Javaweb之SpringBootWeb案例文件上传的详细解析_表单_10

编辑

表单提交的三项数据(姓名、年龄、文件),分别存储在不同的临时文件中:

Javaweb之SpringBootWeb案例文件上传的详细解析_文件上传_11

编辑

当我们程序运行完毕之后,这个临时文件会自动删除。

所以,我们如果想要实现文件上传,需要将这个临时文件,要转存到我们的磁盘目录中。


标签:文件,Javaweb,form,upload,SpringBootWeb,表单,编辑,上传
From: https://blog.51cto.com/u_16265376/11984068

相关文章

  • 命令行中实现FTP文件上传与下载
    1、在命令行连接FTP服务器:ftpftp服务器url2、从FTP服务器下载文件:mget下载的文件名(ftp)Transfercomplete表示下载完成。注:eqpInfos.pdf文件必须在ftp服务器当前目录(dir命令可以查)eqpInfos.pdf会下载到本地的当前目录(lcd命令可查)lcd查看当前本地目录;dir查看ftp服务......
  • 基于JavaWeb开发的java eclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版
    基于JavaWeb开发的javaeclipse+jsp+mysql+servlet+Spring的学生信息管理系统基础版......
  • JavaWeb【day12】--(SpringBootWeb登录认证)
    案例-登录认证在前面的课程中,我们已经实现了部门管理、员工管理的基本功能,但是大家会发现,我们并没有登录,就直接访问到了Tlias智能学习辅助系统的后台。这是不安全的,所以我们今天的主题就是登录认证。最终我们要实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。......
  • JavaWeb【day15】--(Maven高级)
    Maven高级Web开发讲解完毕之后,我们再来学习Maven高级。其实在前面的课程当中,我们已经学习了Maven。我们讲到Maven是一款构建和管理Java项目的工具。经过前面10多天web开发的学习,相信大家对于Maven这款工具的基本使用应该没什么问题了。我们掌握了Maven工具的基本......
  • 【待做】【JavaWeb】HTTP、Tomcat、Servlet
    一、JavaWeb框架及HTTP介绍二、IDEA+Tomcat集成快速构建JavaWeb项目2.1快速构建JavaWeb项目2.2IDEA集成本地Tomcat2.3IDEA配置Tomcat的Maven插件2.4项目打包后的目录结构三、Servlet执行流程及生命周期介绍3.1Servlet介绍及写个接口3.2Se......
  • JavaWeb开发01 - HTML+CSS
    浏览器内核对前端代码进行渲染解析,为确保解析效果一直制定web标准。Web标准也称为网页标准,由一系列的标准组成,大部分由W3C(WorldWideWebConsortium,万维网联盟)负责制定。由三个组成部分:HTML:负责网页的结构(页面元素和内容)。CSS:负责网页的表现(页面元素的外观、位置等页面样式......
  • JavaWeb案例-登录认证
    在前面的文章中,我们复习了部门管理、员工管理的基本功能。但是我们并没有登录,就直接访问到了Tilias智能辅助系统的后台。这是不安全的,所以今天复习登录认证。最终实现的效果就是用户必须登录之后,才可以访问后台系统中的功能。 1.登录功能 1.1需求在登录界面中,我们可以输......
  • java上传文件接口开发uploadFile
    controller层:@PostMapping("/uploadFile")publicServiceResultuploadFile(MultipartFilefile,@RequestParamStringcompareType){returnprimaryService.uploadFile(file,compareType);}service层:/***样本文件上传*@p......
  • 镭速加密上传大文件方法
    在当今的信息时代,大数据已经成为我们生活中不可或缺的一部分,尤其是对于企业来说,如何在网上传输大文件,保证这些文件在传输过程中的安全是非常重要的。对此,本文将详细介绍镭速如何通过加密技术将大文件安全上传到服务器。第一,文件加密的重要性文件加密是保护未经授权的第三方访问数据......
  • 镭速加密上传大文件方法
    在当今的信息时代,大数据已经成为我们生活中不可或缺的一部分,尤其是对于企业来说,如何在网上传输大文件,保证这些文件在传输过程中的安全是非常重要的。对此,本文将详细介绍镭速如何通过加密技术将大文件安全上传到服务器。第一,文件加密的重要性文件加密是保护未经授权的第三方访问数据......