@el-upload和flask的坑
所谓的跨域,一直无法解决
首先,在upload自动发送的时候,总是出现
No 'Access-Control-Allow-Origin' header is present on the requested
你可能已经尝试过跨域的处理的,但是还没有解决(他们依然有用!因为确实需要跨域,因此不需要删除flask的配置!)。相信这篇文章能给你一点启发。
问题可能不在,跨域,在于flask无法正确的接受文件,当你尝试发送一个String是,用
```
request.get_data()
```
是否能够获取到呢?
可以的话,几乎可以确定是你获取文件的方式不对!
请尝试用
```
data=request.files.get('file')
//其他数据的接收方式自行尝试或者百度
```
或许就解决了!
options请求导致接收不到后端的数据
我的方法比较粗暴,直接关闭自动上传,自己写一个覆盖
下面是重写的坑!
重写上传后文件无法接收
其次当我们设置
```
auto-upload="false"
```
后重写,上传
```
test(file){
var fd = new FormData()
fd.append('file', file)
//上传的文件为二进制文件需要,file.raw才是
fd.append('name', file.name)
axios.post('http://127.0.0.1:8080/classfy/',fd,{
headers: {
'Content-Type': 'multipart/form-data;'
}}
).then((response) => {
console.log(response)
alert(response.data.class)
})
.catch((error) => {
console.log(error)
})
}
```
发现又开始
No 'Access-Control-Allow-Origin' header is present on the requested
这时可能不是你接受的方法不对,而是你传输的格式。
![重写后无法接收的文件](https://img-blog.csdnimg.cn/20210607113535216.png#pic_center)
通过检查,我们发现重写后上传的文件是这样的
但我们自动上传是这样的
![自动上传可接收的](https://img-blog.csdnimg.cn/20210607113710497.png#pic_center)
它是二进制!
通过对upload.vue 的解析,我们发现,file有个raw属性
于是
```
fd.append('file', file.raw)
```
完美解决了!
第一次记录问题写的不好!给个赞吧!