当前位置: 首页 > news >正文

Vue开发前端图片上传给java后端

前端效果图

图片上传演示

1 前端代码

<template><div><!-- 页面标题 --><h1 class="page-title">图片上传演示</h1><div class="upload-container"><!-- 使用 van-uploader 组件进行文件上传,v-model 绑定 fileList 数据,支持多选文件,afterRead 属性指定读取文件后的回调函数 --><van-uploader v-model="fileList" multiple :after-read="afterRead" /></div><button class="submit-button" @click="submitUpload">提交上传</button></div></template><script>
import axios from 'axios'
export default {data () {return {// 存储上传文件列表fileList: []}},methods: {afterRead (file) {// 此时可以自行将文件上传至服务器// 设置文件状态为上传中,并添加提示信息file.status = 'uploading'file.message = '上传中...'const fd = new FormData()// 将文件添加到 FormData 对象中,准备上传fd.append('file', file.file)axios.post('http://localhost:8081/api/upload', fd, {headers: {// 设置请求头为 multipart/form-data,用于文件上传'Content-Type': 'multipart/form-data'}}).then((res) => {console.log(res.data.code)// 判断服务器返回的状态码,如果为 200 表示上传成功if (res.data.code === 200) {file.status = 'done'file.message = '上传成功'file.content = res.data.data} else {file.status = 'failed'file.message = '上传失败'}}).catch((error) => {console.error(error)})},submitUpload () {// 遍历数组返回新数组const imgs = this.fileList.map(item => item.content)// 可以在这里添加提交上传的逻辑,比如确认所有文件上传状态等axios.post('http://localhost:8081/api/submit', JSON.stringify({ imgs }),{headers: {'Content-Type': 'application/json'}}).then((res) => {console.log(res.data)}).catch((error) => {console.error(error)})}}
}
</script><style scoped lang="less">h1 {text-align: center;}.page-title {font-size: 24px;font-weight: bold;color: #333;margin-bottom: 20px;}.upload-container {border: 2px dashed #999;padding: 20px;display: flex;flex-direction: column;align-items: center;}.submit-button {margin-top: 20px;padding: 10px 20px;background-color: #007bff;color: #fff;border: none;border-radius: 5px;cursor: pointer;}</style>

这是基于vue脚手架开发的,用于将本地的图片上传至服务器,并在上传过程中展示预览图。

注意:van-uploader标签是vant的一个组件,不会使用可以参考下列链接:vant

2 后端代码

@RestController
@CrossOrigin("*")
@RequestMapping("/api")
public class FileController {@PostMapping("/upload")public Result upload(MultipartFile  file){//file是前端传给后端的文件,文件可以保存到阿里云的oss、linux文件夹等都可以,这里由你们自己实现...,最终会得到一个图片url// 假设图片保存的地址String url="https://img2.baidu.com/it/u=446981511,947966320&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1727197200&t=3fc1e64aa5ec768a5bf721d5f131d60f";return Result.success(url);}@PostMapping("/submit")public Result add(@RequestBody ImagesDTO images) throws Exception{for (String img : images.getImgs()) {System.out.println(img);}return Result.success();}}

3 实现思路

步骤一:点击下方按钮

步骤二:选择图片,选中图片后,前端就会调用methods中afterRead(file)函数,最终将图片文件传给http://localhost:8081/api/upload后端接口,后端将图片存储,并返回图片的存储地址给前端。

 步骤三:前端会判断后端的响应,对不同响应做出不同处理,如果成功的话,前端可以拿到图片的存储地址,并将本张图片的后端地址,存储到本地。

res.data.data是图片后端地址

 所有的图片信息会存储在下列数组中,包括图片后端地址。

数组格式如下:

步骤四:点击提交上传后,会遍历flieList数组,将各元素的content(图片地址)的拿出,创建新的数组,将数组传给后端接口。

后端收到前端的请求 

相关文章:

  • 华为机考练习(golang)
  • 简单的spring缓存 Cacheable学习
  • 小北的JDK1.8下载、安装和环境配置教程——附件资源
  • C# 委托(Delegate)一
  • Spring Boot 学习之路 -- 基础认知
  • 云电脑、指纹浏览器,虚拟机这三者的区别
  • quiz: python网络爬虫之规则1
  • 大豆重测序-文献精读53
  • 什么是文件完整性监控(FIM)
  • 大模型-模型预训练-模型参数量计算
  • 落魄前端搞副业之 改造淘宝首页(淘宝换肤)
  • Java实现Excel导入和导出
  • TypeScript 设计模式之【状态模式】
  • 生信分析Python编程高级技巧
  • DAY16||513.找树左下角的值 |路径总和|从中序与后序遍历序列构造二叉树
  • [译]Python中的类属性与实例属性的区别
  • 10个确保微服务与容器安全的最佳实践
  • C++类中的特殊成员函数
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Docker入门(二) - Dockerfile
  • iOS 颜色设置看我就够了
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • Java-详解HashMap
  • JS实现简单的MVC模式开发小游戏
  • Leetcode 27 Remove Element
  • SQLServer之索引简介
  • vagrant 添加本地 box 安装 laravel homestead
  • Vue.js源码(2):初探List Rendering
  • Vue小说阅读器(仿追书神器)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 解析带emoji和链接的聊天系统消息
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 类orAPI - 收藏集 - 掘金
  • 驱动程序原理
  • 微信小程序--------语音识别(前端自己也能玩)
  • 我的zsh配置, 2019最新方案
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • # Apache SeaTunnel 究竟是什么?
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #70结构体案例1(导师,学生,成绩)
  • #pragma once与条件编译
  • #stm32驱动外设模块总结w5500模块
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (12)目标检测_SSD基于pytorch搭建代码
  • (9)目标检测_SSD的原理
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .NET Core 发展历程和版本迭代
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 设计一套高性能的弱事件机制
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 使用 XPath 来读写 XML 文件