element-ui upload小白踩坑

昨天用upload做了一个文件上传,然后由于菜遇到了以下几个问题。。。。虽然还不懂底层原理,也是学到了一些东西,做个记录~吸取教训~~~~~·

1.将文件信息发给后台时,后台总是收到的2次数据,开始以为是由于跨域问题发送的一次options请求一次请求导致的,后台没有过滤掉options的请求。弄了几个小时没有解决,后来老大把我的代码删了一些多余的,发现是由于我在组件上使用了:data=“uploadData”,又带了一次文件信息过去,去掉:data就没有问题了,后台能正常接收到一次文件信息。然后再次查看upload组件参数,对于data的解释为上传时附带的额外参数,然后猜测为element的upload组件在给action里的地址发送请求时,会自动将文件信息带过去。

2.需求是将文件发送给后台,后台返回一个url地址,图片墙需要用后台给的地址来展示图片,然后upload照片墙地址好像是默认的本地地址。。。当时不知道怎么去修改这个地址,然后找到了https://segmentfault.com/q/1010000014920750这个回答,使用file-list来解决了照片墙图片展示的地址问题,每次上传成功之后,后台给我返回一个地址,我就添加到file-list里面,照片墙里的地址就用的file-list里的~ 


3.格式不是后台支持的时候,后台会拒绝我的图片,不存在数据库里,并给我返回一个{message:"文件格式错误",code:"4003"}的信息,但是此时是走的onSuccess这个函数,图片仍然会预览在照片墙里,不是按我想的一样走onError函数,直接提示文件格式错误然后图片消失。然后看官网案例,如果格式不支持的时候返回的status code是503,然后老大让后台开发人员将返回的status code改成这种类似的,就解决了~



Element-UIUpload组件主要用于处理文件上传,包括图片、文本等常见格式。如果你想要手动上传Excel文件,你可以按照以下步骤操作: 1. 首先,你需要安装Element-UI以及相关的文件上传插件,如`axios`用于发送HTTP请求,因为`element-upload`本身并不直接支持上传Excel文件。 ```bash npm install element-ui axios ``` 2. 在Vue项目中引入Element-UIUpload组件: ```html <template> <el-upload :action="uploadUrl" :on-change="handleChange" :file-list="fileList" accept=".xls,.xlsx" <!-- 表示接受.xls和.xlsx类型的文件 --> > <i class="el-icon-upload"></i> 点击上传 </el-upload> </template> <script> import axios from 'axios'; export default { components: { ElUpload }, data() { return { fileList: [], uploadUrl: 'your-api-url-to-upload', // 替换为你实际的上传接口地址 }; }, methods: { handleChange(file) { if (!file.type.includes('application/vnd.ms-excel')) { this.$message.error('只支持Excel文件'); return; } const reader = new FileReader(); reader.onload = (e) => { axios.post(this.uploadUrl, e.target.result, { headers: { 'Content-Type': 'multipart/form-data' } }) .then(response => { console.log('上传成功:', response); // 更新文件列表或处理服务器响应 }) .catch(error => { console.error('上传失败:', error); }); }; reader.readAsArrayBuffer(file); } } }; </script> ``` 在这个例子中,当用户选择一个Excel文件后,`handleChange`方法会读取文件内容,并使用axios发送POST请求到指定的API。注意,由于浏览器安全限制,`FileReader` API只能读取二进制数据,所以我们需要设置`Content-Type`为`multipart/form-data`以便于服务器识别。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值