热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot6==springboot前后端分离demo,图片前端上传,后端下载保存到本机

参考地址:How2J的Java教程How2J的Java教程,内容涵盖J2SE、WEB前端、J2EE、框架技术等全面的Java内容。基于实例代码和视频讲解的学习方式为J

参考地址:How2J 的 Java教程How2J的Java教程, 内容涵盖J2SE、WEB前端、J2EE、框架技术等全面的Java内容。 基于实例代码和视频讲解的学习方式为Java职业生涯打下坚实的基础

==============================================================

2、前端页面

需要引入vue和elementUI和axios,上官网下载即可。

















3、Controller层DemoUpladDownLoadImg.java

package com.ldj.reggie.controller.demoUpload;import com.ldj.reggie.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.UUID;/*** 测试图片文件上传下载*/
@RestController
@RequestMapping("/common")
@Slf4j
public class DemoUpladDownLoadImg {@Value("${basePath}")private String basePath;/*** @param file 参数名字必须写这个file* @return*/@PostMapping("/upload")public R upLoadImg(MultipartFile file) {//debug到这。当前是存在C盘的一个临时文件log.info(file.toString());String originalFilename = file.getOriginalFilename();//得到后缀名int i = originalFilename.lastIndexOf(".");String substring = originalFilename.substring(i);//生成新文件名String fileNewName = UUID.randomUUID().toString() + substring;//转存到图片指定位置,位置在项目配置文件yml中指定//判断存放图片的目录是否存在,不存在就创建File dir = new File(basePath);if (!dir.exists()) {dir.mkdirs();}//存放在本机的文件名+后缀File dest = new File(basePath + fileNewName);try {log.info("图片存放地址:" + basePath + fileNewName);file.transferTo(dest);} catch (IOException e) {e.printStackTrace();}return R.success(fileNewName);}@GetMapping("/download")public void downLoadImg(@RequestParam String name, HttpServletResponse response) {log.info("想要的图片名字{}", name);FileInputStream fileInputStream = null;ServletOutputStream outputStream = null;File file = new File(basePath + name);try {//输入流读取本机图片fileInputStream = new FileInputStream(file);response.setContentType("image/jpeg");outputStream = response.getOutputStream();int len = 0;byte[] bytes = new byte[1024];while ((len = fileInputStream.read(bytes)) != -1) {outputStream.write(bytes, 0, len);outputStream.flush();}} catch (Exception e) {e.printStackTrace();} finally {try {assert outputStream != null;outputStream.close();fileInputStream.close();} catch (Exception e) {e.printStackTrace();}}}
}

4、在配置文件中指定保存路径

basePath: D:\\

====================================

5、访问

http://localhost:8080/backend/page/demoUpload/upload.html

6、选择选择一张图片,成功上传到本机的D盘。 

 

==================================================================== 

总结:

springboot的文件上传下载是基于Apache 基金会下面的一个子项目,子项目叫做commons,这个子项目中用于文件上传下载的包是commons-upload,然后commons-upload又基于commons-io。这些都集成在starter中了。 

文件先是被临时存储在C盘,可以通过debug查看

后端必须使用file作为对象名:MultipartFile file,因为前端页面使用elementUI以表单方式上传图片的时候,自动给这个流取了个名叫file。当然也可以通过其他注解修改对象名。


推荐阅读
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 本文详细介绍了如何使用JavaScript实现面部交换功能,包括基本原理和具体实现步骤。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 一、Tomcat安装后本身提供了一个server,端口配置默认是8080,对应目录为:..\Tomcat8.0\webapps二、Tomcat8.0配置多个端口,其实也就是给T ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 通过使用七牛云存储服务,本文详细介绍了如何将本地图片高效上传至云端,并实现了内容的便捷管理。借助七牛云的 Python SDK,文章提供了从认证到文件上传的具体代码示例,包括导入必要的库、生成上传凭证以及处理文件路径等关键步骤。此外,还探讨了如何利用七牛云的 URL 安全编码功能,确保数据传输的安全性和可靠性。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 在 Vue 项目中,为了提高页面加载速度和优化用户体验,实现图片上传前的压缩处理至关重要。本文介绍了如何通过集成第三方库和自定义组件,有效减小图片文件大小,确保在不影响图像质量的前提下,提升应用性能。 ... [详细]
author-avatar
hustjs
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有