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

文件上传(vue3+element-plus+php)

文章指导来源:https://www.jb51.net/article/267315.html

一、概要:实现文件自定义上传(主要使用axios请求)

二、介绍upload上传组件常用属性

auto-upload:自动上传,单独上传文件时,这个属性才有用,因为单独文件直接上传到后台服务器。

action:这个属性是上传文件的地址,当我们指定了 auto-upload 属性,组件就会自动按 action 的地址提交。自定义上传时,可设置属性值为"#"。

accept:限制上传类型的,当然仅限选择时的类型。

file-list:默认上传文件。:file-list="fileList",渲染后fileList[index]是Object类型,而不是后台所需的File类型,而这个组件已经把对应的File类型存储到了fileList[index].raw这个属性里,直接拿来用就好。

三、前端代码


<el-upload:file-list="fileList":auto-upload="false":on-change="handleChange"
><el-button type="primary">选择文件</el-button><template #tip><div class="el-upload__tip">上传提示</div></template></el-upload>
<el-button type="primary" @click="handleUpload">确认上传</el-button>
// 上传的文件列表
const fileList = ref([]);//文件选择后执行的方法
const handleChange = (file, uploadFiles) => {fileList.value = uploadFiles;
};// 发给后端
const handleUpload = async () => {let formData = new FormData();formData.append("file", fileList.value[0].raw);//封装axios后,调用后端的API方法const res = await uploadAttachments(formData, {"Content-Type": "multipart/form-data;"});
};

四、后端代码

/*** 上传文件* @ApiMethod (POST)* @param File $file 文件流*/public function upload(){Config::set('default_return_type', 'json');//必须设定cdnurl为空,否则cdnurl函数计算错误Config::set('upload.cdnurl', '');$attachment = null;//默认普通上传文件$file = $this->request->file('file');// $post = $this->request->post();// dump($file);exit;try {$upload = new Upload($file);$attachment = $upload->upload();} catch (UploadException $e) {$this->error($e->getMessage());}$this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);}

五、遇到的问题

上传请求参数的格式不对。使用FormData提交文件只能使用post请求,在post请求体中需要设置 “Content-Type”:“multipart/form-data;charset=utf-8”,提醒后台数据是FormData类型。

http://www.dtcms.com/a/564831.html

相关文章:

  • Unity与iOS原生交互开发入门篇 - 打开iOS设置
  • Python循环continue与break
  • 网站开发 外包空心哪家网站设计比较好
  • Python scikit-learn详解:从入门到实战,机器学习的“瑞士军刀”
  • [论文阅读] AI+ | 从 “刚性科层” 到 “智能协同”:一文读懂 AI 应对国家安全风险的核心逻辑
  • 西安网站托管商家成都比较好的室内设计公司有哪些
  • Spark 中数据读取方式详解:SparkSQL(DataFrame)与 SparkCore(RDD)方法对比及实践
  • gta5线下买房网站建设公司logo是什么意思
  • Java面试场景题及答案总结(2025版持续更新)
  • Spring 异常处理机制:@ExceptionHandler、@ControllerAdvice
  • iTOP-RK3568OpenHarmony系统南向驱动开发手册
  • k8s-部署springboot容器化应用
  • Adobe Camera Raw 2026 全面解析:AI污点清除、雪景蒙版与变量调整深度评测
  • 网站制作平台能赚钱吗男女做羞羞的事视频网站
  • Intro.js 和 Driver.js
  • 水印攻击中(鲁棒性攻击、表达攻击、解释攻击)的区别,详细解释清楚
  • 14-循环神经网络(RNN):分析RNN在序列数据中的表现和特点
  • 深入浅出 Java 虚拟机之垃圾回收
  • 沧州市东光建设局 网站网站描述是什么
  • 从零开始MySQL-第4章 C[create]R[read]U[update]D[deletet]
  • Java版智慧场馆运营管理系统源码-全链路商品进销存精准管控方案
  • 电商销售数据分析实战:从数据挖掘到业务增长
  • 中文购物网站模板保存的密码变成乱码
  • 【开题答辩实录分享】以《宠物领养微信小程序》为例进行答辩实录分享
  • 【Block总结】MSC,多尺度稀疏交叉注意力网络在遥感场景分类中的应用|即插即用
  • CANN卷积算子深度优化:以ResNet推理为例
  • PINN求解一维亥姆霍兹方程,以声学问题为例,使用L-BFGS优化器,将传统物理建模与现代深度学习相结合,为解决科学计算问题提供了新的范式,MATLAB代码
  • 文件存储服务有哪些?他们优缺点分别是什么?FastDFS、MinIO、Ceph、HDFS、MooseFS、TFS、七牛云、阿里云 OSS
  • 如何一键将 PDF 转为 Word?
  • 20-递归神经网络(Recursive NN):介绍递归神经网络的特点和用途