事情是这样的,文件上传这个功能本来打算用封装的接口,但是文件上传的接口请求头需要进行单独的定义,所以我就写了一个单独的axios请求,如下
const customUpload = (e) => {
let data = {
file: e
}
axios
.post(`http://xxx/sys/village/importExcel`, data, {
headers: {
'Content-Type': 'multipart/form-data',
Authorization: token,
Token: token
}
})
.then((response) => {
// 处理上传成功
message.info('文件上传成功')
handleSuccess(response, e)
})
.catch((error) => {
// 处理上传失败
message.info('文件上传失败')
handleError(error, e)
})
}
但是我把项目放到线上进行测试的时候,出现了跨域(我不太懂),报如下错误:
POST http://xxx/sys/village/importExcel net::ERR_CONNECTION_REFUSED
原因:
因为这个接口地址是我单独写的,他的ip是死的,不像封装的接口一样可以动态变换,所以我改成线上地址之后就会出现跨域请求错误,然后我就改成这样的了:
(只有.post后面的地址改变了)
import sysConfig from '@/config/index'
const customUpload = (e) => {
let data = {
file: e
}
axios
.post(`${sysConfig.API_URL}/sys/village/importExcel`, data, {
headers: {
'Content-Type': 'multipart/form-data',
Authorization: token,
Token: token
}
})
.then((response) => {
// 处理上传成功
message.info('文件上传成功')
handleSuccess(response, e)
})
.catch((error) => {
// 处理上传失败
message.info('文件上传失败')
handleError(error, e)
})
}
像上面这样的话,我的接口地址里ip就是动态的了,会根据我给他配置线上地址动态生成,
然后就可以成功上传文件啦
问题解决