为了账号安全,请及时绑定邮箱和手机立即绑定

java入门005~springboot实现单个文件上传(图片 文档 视频 音频都可以上传)

上一节教大家开发了一个简单的可供浏览器,微信小程序访问的java后台项目,这一节来给大家讲讲我的如何使用springboot实现文件上传的功能,可以上传图片,文档,视频,音频。

本节知识点

  • 1,springboot项目的搭建

  • 2,图片,文档,视频,音频的上传

  • 3,通过网址可以访问到我们的上传文件

技术

  • 1,jdk8

  • 2,springboot2.1.5

  • 3,开发工具IntelliJ IDEA2019 最新版

如果你还不知道如何创建一个springboot项目,请查看上一节内容。这里不再讲解项目的创建流程,而是直接讲我们的技能点了。

一,首先要在我们的pom.xml里引入web类库

web类库的引入,前面章节和视频里也有讲解。

5cff4b750001a65706000383.jpg


二,创建upload.html,实现文件的选择与上传

如下图所示:在resources目录的static文件下创建upload.html文件。(如果static不存在,就自己创建一个static文件)

5cff4b7600012eb506000187.jpg

代码给大家贴出来

<!DOCTYPE html> <html> <head>  <meta charset="UTF-8">  <title>上传文件到服务器</title> </head> <body> <form action="/upload" method="post" enctype="multipart/form-data">  <input type="file" name="uploadFile" value="请选择文件">  <input type="submit" value="上传"> </form> </body> </html>


三,创建UploadController类,用来接收上传的文件



5cff4b760001ffdc06000319.jpg
这里简单给大家讲解下实现步骤


  • 1,upload.html选择文件

  • 2,upload.html上传文件

  • 3,UploadController通过设置@RestController注解,来接收网页的请求

  • 4,通过MultipartFile和HttpServletRequest拿到上传的文件和请求信息

  • 5,创建存储文件的目录

  • 6,通过uploadFile.transferTo(fileServer); 把上传的文件存储到服务器

  • 7,返回一个可以访问文件的网址。

完整代码

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;

/**
 * Created by qcl on 2019-06-11
 * desc: 文件上传
 */
@RestController
public class UploadController {

    @PostMapping("/upload")
    public String upload(MultipartFile uploadFile, HttpServletRequest request) {
        /*
         定义文件的存储路径,如下,是在linux和mac上定义的文件路径
        /private/var/folders/8x/4zvnbqmj1w33cqmzrpygzbth0000gn/T/tomcat-docbase.5206733816001100271.8080/uploadFile
         */

        String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
        File dir = new File(realPath);        if (!dir.isDirectory()) {//文件目录不存在,就创建一个
            dir.mkdirs();
        }

        try {
            String filename = uploadFile.getOriginalFilename();
            //服务端保存的文件对象
            File fileServer = new File(dir, filename);
            System.out.println("file文件真实路径:" + fileServer.getAbsolutePath());
            //2,实现上传
            uploadFile.transferTo(fileServer);
            String filePath = request.getScheme() + "://" +
                    request.getServerName() + ":"
                    + request.getServerPort()
                    + "/uploadFile/" + filename;
            //3,返回可供访问的网络路径            return filePath;
        } catch (IOException e) {
            e.printStackTrace();
        }        return "上传失败";
    }
}

四,验证

1,启动项目,如何启动前面章节有讲,这里不再啰嗦。2,访问upload.html,输入下图所示的网址,即可访问

5cff4b770001c69806000201.jpg

3,选择文件
5cff4b7700016f0e06000213.jpg

4,点击上传,然后就可以看到上传后的返回结果
5cff4b77000148db06000294.jpg

5,我们可以直接访问第4步返回的链接,可以看到图片显示出来了
5cff4b780001277706000484.jpg

注意:如果你上传的是一个zip压缩文件,访问的时候是直接下载文件
5cff4b7800015eb106000127.jpg



5cff4b7900019cba04700190.jpg

如果上传的是一个视频
5cff4b7900010b7106000069.jpg
大小不能超过1048576 bytes,也就是视频大小不能超过1.23M.否则会报如下错误,这错误的解决也很简单,我们后面章节会做讲解。
5cff4b820001933506000048.jpg


来看下一个mp4格式的视频上传成功后,访问视频资源的效果



5cff4b830001196506000107.jpg


5cff4b8300014d6e06000383.jpg

可以看到,我们访问的时候,就可以直接在浏览器里播放这个mp4视频文件。到这里我们就完整的实现了文件的上传。


源码已经传到网盘,如果想要源码,请先关注然后私信老师获取。



5cff4b840001868606000231.jpg

我们下一节会把这节内容录制成视频,方便大家理解。敬请期待下一节。

源码地址:https://github.com/qiushi123/springboot-demos



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
252
获赞与收藏
1021

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消