luch-request 3.0
通过组件 uni-file-picker
的 @select
事件获取到二进制文件后,希望通过 luch-request
的 request
api 来上传,写来写去,感觉怎么都不对,代码如下:
封装的请求插件:
import Request from "@/js_sdk/luch-request/luch-request/index.js";
import config from "@/api/common/config.js";
const http = new Request({
baseURL: config.baseUrl + `/api/`, //
custom: { auth: true }, //
timeout: 10000,
});
http.interceptors.request.use(
(config) => {
if (config.custom && config.custom.timeout) {
config.timeout = config.custom.timeout
}
const token = getToken();
config.header = {
...config.header,
Token: token
};
if(config.custom.headers) {
config.header = Object.assign({}, config.header, config.custom.headers)
}
config.url += (config.url.indexOf('?') > -1 ? '&' : '?' + `t=${Date.now()}`)
config.method = config.method.toUpperCase()
return config;
},
(config) => {
return Promise.reject(config);
}
);
http.interceptors.response.use((response) => {
//省略部分代码
}, (error) => { /* 对响应错误做点什么 (statusCode !== 200)*/
return Promise.reject(error)
})
uni.$http = http;
export default http
请求接口:
export function postFile(data, config) {
return http.request({
url: serviceAreaName + 'UploadFile',
method: 'post',
data,
custom: config
})
}
调用页面
selectFileNew(res) {
let self = this;
let { tempFiles } = res
let file = tempFiles[0].file
let config = {
headers: { 'Content-Type': 'multipart/form-data' },
timeout: 1000 * 60 * 10
}
let formData = new FormData();
formData.append("file", file, file.name);
formData.append('type', 1)
fileUpload.postFile(formData, config).then(res => {
})
},
错误提示:
request:fail parameter data
. Expected Object, String, Array, ArrayBuffer, got FormData
根本没发请求就报错了,说明参数那部分错了,关键是我的接口是已经设置好的,上传的格式为multipart/form-data
, data 名为 file 的二进制文件,网上搜了一大片都是很简单的赋值,连个上传的demo都找不到,哎。
上传请使用上传API 👉 #upload - 3.x文档 | luch-request
这个是对应的 Issue 问题 👉 请指教,关于file文件上传问题 · Issue #17 · lei-mu/luch-request