首页 > 其他分享 >springboot的上传和下载文件

springboot的上传和下载文件

时间:2024-12-29 23:19:37浏览次数:1  
标签:文件 selectedLSBFile springboot color upload 上传 event 下载

简介
个人项目的内容参考,包含了通过前端发送文件和请求下载文件的代码编写。前端基于vue框架,后端基于springboot

springboot配置

上传文件

传入的文件用MultiparFile进行接收
alt text

postman:
alt text

下载文件

将需要传入的文件转换为byte数组然后返回给

ResponseEntit.contentType(MediaType.APPLICATION_OCTET_STREAM)

表示这是一个响应的二进制流,

.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filePath + 

这行代码设置了 HTTP 响应头 Content-Disposition。Content-Disposition 响应头用于告诉浏览器如何处理响应的内容。在这里,它被设置为 attachment,意味着提示浏览器下载文件而不是直接展示它。filename 参数后面跟着文件的名称,这里使用了变量 filePath 来动态设置文件名。注意,文件名被放在引号内,以确保即使文件名中包含空格也能被正确处理

.body(bytes)

这行代码设置了响应体(body),即实际发送给客户端的数据。在这里,bytes 应该是一个包含文件内容的字节数组(byte[])。这意味着服务器将发送这个字节数组作为响应体,客户端接收到后可以将其保存为文件。
alt text

直接在url中访问http://localhost:8081/image/download
alt text

前端的配置实现前后端联调

axios设置
alt text
api的编写
alt text

网页的搭建
html

<div class="upload-container">
  <label
    draggable="true"
    for="fileInput"
    class="upload-trigger"
    @dragenter="handleDragEnter"
    @dragover.prevent
    @dragleave="handleDragLeave"
    @drop="handleDrop"
  >
    <i class="el-icon-upload icon"></i>
    <div class="upload-text">
      将文件拖到此处,或<span class="drag-tip">点击上传</span>
    </div>
  </label>
  <input
    type="file"
    id="fileInput"
    style="display: none"
    @change="handleFileChange"
  />
</div>
/**通过按钮发送文件 */
<el-button @click="uploadLSBImage">上传文件</el-button>

css

.upload-container {
  flex-direction: column;
  padding: 20px;
  border: 2px dashed #ccc;
  border-radius: 5px;
  background-color: #f9f9f9;
  width: 320px;
  height: 160px;
  cursor: pointer;
  transition: border 0.3s ease;
  margin-top: 20px;
}

.upload-trigger {
  display: flex;
  flex-direction: column;
  align-items: center;
  cursor: pointer;
  width: inherit;
  height: inherit;
}

.icon {
  margin-top: 20px;
  /* 假设你有一个上传图标的字体图标类 */
  font-size: 68px;
  color: #666;
}

.upload-text {
  margin-top: 10px;
  color: #333;
}

.upload-tip {
  margin-top: 5px;
  font-size: 12px;
  color: #666;
}
/* 拖动 */
.upload-trigger.dragover {
  border-color: #409eff; /* 文件拖拽时的边框颜色 */
}

选择文件
主要目的:从事件中保存文件和文件名

拖拽文件函数

handleDragEnter() {
  // 当文件拖拽进入时改变样式
  this.dragOver = true;
},
handleDragLeave() {
  // 当文件拖出时重置样式
  this.dragOver = false;
},
handleDrop(event) {
  // 处理文件drop事件
  event.preventDefault();
  this.dragOver = false;
  const files = event.dataTransfer.files;
  if (files.length) {
    this.selectedLSBFile = files[0];
    this.fileName = this.selectedLSBFile.name;
  }
},

选择文件函数
将事件event传入。获取到文件,然后记录下文件的名字和保存这个文件。

handleFileChange(event) {
  // 当文件选择器的值发生变化时,更新selectedFile
  const file = event.target.files[0];
  if (file) {
    console.log("change");
    this.selectedLSBFile = file;
    this.fileName = file.name; // 更新文件名
  }
},

*发送文件
文件的包装需要使用formData以键值对的方式进行传输

solveLSBImage() {
  if (this.selectedLSBFile) {
    console.log("发生");
    // 创建FormData对象
    const formData = new FormData();
    // 将图片文件添加到FormData对象中
    formData.append("file", this.selectedLSBFile);
    imageAPI.lsbSolve(formData).then((res) => {
      console.log(res)
      this.solveMessage = res.data;
    });
  }
},

后端对应的处理函数
alt text
结果:
alt text
上传成功
alt text

下载文件
实际就是直接通过url访问对应的接口就可以实现文件的下载

dowload(){
 window.location.href='http://localhost:8081/image/download'
},

标签:文件,selectedLSBFile,springboot,color,upload,上传,event,下载
From: https://www.cnblogs.com/tdsmomo/p/18639798

相关文章

  • 【前端开发】代码上传前怎么避免把 账号,密码,AppId, key 之类私密信息 提交上去
    平时我们写代码的时候难免会有一些私密信息不行提交到git仓库上去,比如账号,密码,AppId,key之类不希望公开的信息,但是提交代码难免会有疏漏的时候,对此我们可以写个githook来协助我们进行检查。目的在Git提交操作前,对即将提交的文件进行全面扫描,检查其中是否存在预设的敏感信息......
  • springboot毕设绿色运动会管理系统程序+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着社会对健康和环保理念的日益重视,绿色运动会逐渐兴起。在现代社会中,人们的环保意识不断增强,对于体育运动的追求也不再局限于传统的竞技层面,而......
  • springboot毕设校园闲置物品以物换物平台论文+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在校园环境中,随着学生生活水平的提高以及消费观念的变化,物品更新换代的速度不断加快。学生们拥有大量闲置物品,如书籍、衣物、电子产品等。过去,这......
  • springboot校园以物易物系统-毕业设计源码33451
    目 录1绪论1.1选题背景1.2研究意义1.3论文结构与章节安排2 校园以物易物系统系统分析2.1可行性分析2.2系统流程分析2.2.1 数据流程3.3.2 业务流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3......
  • springboot毕业设计管理系统-毕业设计源码23352
    摘 要当前社会信息化进程的快速发展,高校毕业设计管理系统的设计与实现也是应对信息化需求的重要举措之一。随着互联网技术的日新月异,传统的毕业设计管理方式已无法满足快速、高效的需求,因此需要借助信息技术提供更便捷、高效的管理方案。本文介绍了一个基于springboot框......
  • springboot莆田鞋服企业交流平台-毕业设计源码50267
    摘 要随着互联网的发展和莆田鞋服产业的壮大,企业间的交流与合作变得越来越重要。为了满足莆田鞋服企业的交流需求,本文设计并实现了一个基于SpringBoot的莆田鞋服企业交流平台。该平台旨在提供一个便捷、高效的企业间交流环境,促进信息共享、业务合作和市场拓展。平台基......
  • springboot海外代购平台-毕业设计源码50852
    SpringBoot海外代购平台摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,代购平台当然也不例外。海外代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发......
  • springboot智慧仓库管理系统-毕业设计源码51095
    摘 要本文详细阐述了基于SpringBoot框架的智慧仓库管理系统的设计与实现过程。该系统旨在通过集成先进的信息化技术,提升仓库管理的智能化水平,实现高效、准确的物资管理。系统核心功能包括产品仓库管理、入库记录管理、出库记录管理、借物记录管理以及归还记录管理。在产......
  • SpringBoot整合Thymeleaf与Bootstrap5:快速构建导航栏并抽取公共代码-幽络源
    教程概述在SpringBoot中整合Thymeleaf、Bootstrap5快速的完成一个页面中导航栏的展示实现,看了本篇文章,相信后续结合这三种框架,快速开发其他页面也会如鱼得水。原文链接:SpringBoot整合Thymeleaf与Bootstrap5:快速构建导航栏并抽取公共代码创建项目首先是创建项目,见上篇文章->......
  • 打工人必备的资源,支持免费下载!
    最近找工作的小伙伴比较多,所以今天给大家推荐一款免费的简历下载网站。所有简历模板全部都可以免费使用。简历下载免费专业简历模板这个网站真的十分良心,无需注册登录就可以一键下载全部的简历模板。而且全部免费。简历的类型也比较丰富有通用、IT互联网、教育......