广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue上传文件formData上传的解决全流程
  • 131
分享到

vue上传文件formData上传的解决全流程

2024-04-02 19:04:59 131人浏览 安东尼
摘要

目录Vue上传文件fORMData上传解决axiOS实例的配置关键配置整体流程解决跨域上传文件跨域上传FormData格式等问题vue 批量上传文件简单说明一个实现思路vue上传文件

vue上传文件formData上传解决

axios实例的配置关键配置

FormData 上传文件类型有变项目中封装的公共方法需要更改头部请求信息设置为设为 “multipart/form-data”

整体流程解决跨域上传文件跨域上传FormData格式等问题

vue中Dom结构

<input type=“file” @change=“handleUpload” />

上传图片更改传递到接口事件

const handleUpload = (e) => {
const service = axios.create({
baseURL: ‘/api',
withCredentials: true // cors跨域要让后台设置cors跨域需后台设配合
})
const params = new FormData() // 声明formData数据类型
params.append(‘file', event.target.files[0])
params.append(‘tp', ‘partImg')
service
.post(‘UploadFiles/UploadImg', params, {
headers: {
‘Content-Type': ‘multipart/form-data'// 修改请求头
}
})
.then(res => {
// console.log(‘提交成功');
})
}

handleUpload需要在vue3项目中return

baseURL设置为api vue项目中创建vue.config文件并写入proxy跨域代理vue2和vue3都支持

vue 批量上传文件

业务背景:一次性批量上传多个文件,只请求一次接口,则手动提交到后台

简单说明一个实现思路

  • 前端vue统一处理多个文件保存到formData对象中,请求后台接口
  • 后台接口使用httpservletRequest 进行接收,可转化成MultipartHttpServletRequest对象接收前端formData对象
//前端使用的UI组件是Ant Design of Vue的upload组件
<template>
  <div class="clearfix">
    <a-upload
      :multiple="true"
      :before-upload="beforeUpload"
      :list-type="listType"
      :file-list="fileList"
      @preview="handlePreview"
      @change="handleChange"
      @download="handleDownload"
    >
      <div v-if="isMore">
        <a-icon type="plus" />
        <div class="ant-upload-text">文件上传</div>
      </div>
      <div v-if="!isMore && fileList.length < 1">
        <a-icon type="plus" />
        <div class="ant-upload-text">文件上传</div>
      </div>
    </a-upload>
    <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
      <img alt="example" style="width: 100%" :src="previewImage" />
    </a-modal>
  </div>
</template>

js的核心代码:

handleUpload() {
      const { fileList } = this
      if (fileList.length > 0) {
        var notUploaded = []
        var uploaded = []
        fileList.forEach((item) => {
          if (item.status && item.status === 'done') {
            uploaded.push(item.url)
          } else {
            notUploaded.push(item)
          }
        })
        let formData = new FormData()
        notUploaded.forEach((file, index) => {
          //所有文件保存在formData中
          formData.append(`file${index}`, file.originFileObj)
        })
        console.log('formData', JSON.stringify(formData))
        //请求批量上传接口
        batchUploadFile(formData, this.targetS).then((res) => {
          if (res.success) {
            console.log('res', JSON.stringify(res))
          } else {
            this.$message.error('图片上传失败,请重新上传')
          }
        })
        // return
        //this.$emit('loadImgUrl', this.loadImgUrl.join(','))
        //this.fileList = []
      } else {
        // 如果没有图片则返回空
        //this.$emit('loadImgUrl', '')
        //this.fileList = []
      }
    },

后台代码:

    @ApiOperation(value = "批量文件上传(最多同时上传5个文件)", notes = "批量文件上传")
    @PostMapping("/batchUploadFile/{filePath}")
    public Result<?> batchUploadFile(@ApiParam(value = "自定义上传文件的路径")
                                     @PathVariable("filePath") String filePath,
                                     HttpServletRequest request) throws Exception {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        if (fileMap.isEmpty()) {
            return Result.error("上传文件不能为空");
        }
        if (fileMap.size() > 5) {
            return Result.error("批量上传文件数量不能超过5个文件");
        }
        List<Map<String, Object>> mapList = ftpUtils.batchUploadFile(fileMap, filePath);
        return Result.OK(mapList);
    }

注意:以上代码部分功能不完全只能作为参考,重点是实现思路

1.前端是如何组装参数

let formData = new FormData()
        notUploaded.forEach((file, index) => {
          //所有文件保存在formData中
          formData.append(`file${index}`, file.originFileObj) //核心代码
        })

2.后台使用MultipartHttpServletRequest对象进行接受

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();

前端参数格式:

请求结果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue上传文件formData上传的解决全流程

本文链接: https://www.lsjlt.com/news/150416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue上传文件formData上传的解决全流程
    目录vue上传文件formData上传解决axios实例的配置关键配置整体流程解决跨域上传文件跨域上传FormData格式等问题vue 批量上传文件简单说明一个实现思路vue上传文件...
    99+
    2022-11-13
  • 怎么在ajax中利用formdata流上传文件
    今天就跟大家聊聊有关怎么在ajax中利用formdata流上传文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。//html如下//form1<form class=...
    99+
    2023-06-08
  • vue上传文件formData入参为空,接口请求500的解决
    目录1.首先封装axios请求2.vue文件点击上传按钮接下来贴出解决的方案long long long time no see,最近遇到个奇葩的问题来记录下,不知道有没有小伙伴和我...
    99+
    2022-11-13
  • JavaWeb文件上传流程
    目录JavaWeb文件上传做一个简单的用户管理系统先上效果数据表准备Jar文件准备项目结构简介JavaWeb文件上传 本文我们学习JavaWeb中最重要的技术之一,文件上传,该案例我...
    99+
    2022-11-13
  • Vue使用formData格式类型上传文件的示例
    在vue中,我们普遍是前后端分离项目,即需要使用axios等工具向后台发送请求实现对数据的操作。 其中,文件上传算是比较难的一种。这篇文章五分钟教会你上传文件。 1.如图片上传,后端...
    99+
    2022-11-12
  • vue文件上传报错如何解决
    本篇内容主要讲解“vue文件上传报错如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue文件上传报错如何解决”吧!vue文件上传报错的解决办法:1、通过“vue init webpack...
    99+
    2023-07-05
  • HttpsURLConnection上传文件流(实例讲解)
    项目需要对接外部接口,将图片文件流发送到外部接口,下面代码就是HttpsURLConnection如何上传文件流: public static void main(String[] args) throws Exception { ...
    99+
    2023-05-31
    httpsurlconnection 上传文件 sur
  • php上传中文文件无法上传问题怎么解决
    php上传中文文件无法上传的解决办法:1、通过“iconv("GBK", "UTF-8", $content);”方法将中文字符编码转换一下;2、将文件重命名即可。本教程操作环境:Windo...
    99+
    2023-05-14
    php 文件
  • 微信小程序接口请求多文件+参数上传、单文件+参数上传(formData形式) 微信小程序实现formData格式传参(亲测有效)
    01.引入所需formData js文件 1.文件链接 链接: https://pan.baidu.com/s/1BDxx0-1KMAnkceXb45L5rg 提取码: 6ibp 2.引入使用 const FormData = requir...
    99+
    2023-08-17
    微信小程序 小程序 小程序formData格式传参
  • 如何解决layui上传文件提示上传异常,实际文件已经上传成功的问题
    这篇文章给大家分享的是有关如何解决layui上传文件提示上传异常,实际文件已经上传成功的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。layui上传文件提示上传异常,实际文件...
    99+
    2022-10-19
  • PHP中的文件上传安全
    随着 Internet 的发展,文件上传功能已经成为了几乎所有 Web 应用程序的标准功能之一。在 PHP 中,文件上传功能是通过 $_FILES 超全局变量来实现的。然而,文件上传功能往往也是 Web 应用程序中最容易出现安全问题的地方。...
    99+
    2023-05-23
    PHP上传文件 文件安全 后端上传
  • GNS3 1.5.2 无法上传文件的解决
      最进下载使用了GNS3的最新版本 1.5.2 ,但很不幸的是,这个版本好像有个bug,不能上传iou,但是能登陆上 IP:3080/upload   注意,自从1.5.1开始,端口就不是8000了,而是3080那要怎么解决呢?其实问题很...
    99+
    2023-01-31
    上传文件
  • 全面解析SpringBoot文件上传功能
    这些天忙着刷题,又怕遗忘了spring boot, 所以抽出一点时间折腾折腾,加深点印象。 spring boot 的文件上传与 spring mvc 的文件上传基本一致,只需注意一些配置即可。 环境要求: Spring Boot v1.5...
    99+
    2023-05-30
    springboot 文件上传 bo
  • Android WebView 上传文件支持全解析
    默认情况下情况下,使用Android的WebView是不能够支持上传文件的。而这个,也是在我们的前端工程师告知之后才了解的。因为Android的每个版本WebView的实现有差...
    99+
    2022-06-06
    上传文件 webview Android
  • php文件上传的流程步骤是什么
    本文将为大家详细介绍“php文件上传的流程步骤是什么”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php文件上传的流程步骤是什么”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获...
    99+
    2023-06-06
  • php上传文件过大怎么解决
    在PHP上传文件过大时,可以通过以下方法解决:1. 修改php.ini配置文件:找到php.ini文件,将以下参数的值调整为合适的大...
    99+
    2023-10-18
    php
  • java文件上传漏洞怎么解决
    要解决Java文件上传漏洞,可以采取以下措施: 文件类型白名单过滤:在服务器端对文件上传请求进行检查,确保只接受预期的文件类型。...
    99+
    2023-10-27
    java
  • Vue 大文件上传和断点续传的实现
    目录文件上传的 2 套方案基于文件流(form-data)客户端把文件转换为 base64大文件上传获取到文件对象并转成 ArrayBuffer 对象创建切片发送请求所有切片发送成功...
    99+
    2022-11-12
  • Web安全之文件上传漏洞详解
    一、文件上传漏洞定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理...
    99+
    2023-09-06
    web安全 网络安全 安全架构 网络攻击模型 安全威胁分析
  • 完全解决FTP上传文件名称中文乱码问题
    完全解决FTP上传文件名称中文乱码问题 说明无效踩坑经历 有效解决方法定时上传文件至ftp样例 说明 今天项目上加了个定时扫描本地文件路径下所有文件实现自动上传至ftp文件服务器的功能,经测试发现一旦上传中文名称的文件...
    99+
    2023-08-21
    服务器 java 运维
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作