bl.uploadFile
基础库版本 >=
2.6.0
支持
将本地资源上传到开发者服务器,客户端发起一个 HTTPS POST 请求,其中 content-type
为 multipart/form-data
。
如页面通过 bl.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。使用前请注意阅读 网络域名限制相关说明
参数说明
属性 | 类型 | 默认值 | 必填 | 说明 | 版本 |
---|---|---|---|---|---|
url | string | 是 | 开发者服务器接口地址,不可以以 // 开头,本地调试和预览时可以用http开头,发到线上时则必须以https为开头 | ||
filePath | string | 是 | 要上传文件资源的路径,支持上传static目录下的本地文件(写法为 '/static/path')或者blfile协议的图片,不支持http链接 | ||
name | string | 是 | 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 | ||
header | object | 否 | HTTP 请求 Header, header 中不能设置 Referer | ||
formData | object | 否 | HTTP 请求中其他额外的 form data | ||
success | function | 否 | 接口调用成功的回调函数 | ||
fail | function | 否 | 接口调用失败的回调函数 |
success参数说明
属性 | 类型 | 说明 | 版本 |
---|---|---|---|
data | string | 开发者服务器返回的数据 | |
statusCode | number | 开发者服务器返回的 HTTP 状态码 |
返回值
返回一个 uploadTask
对象,通过 uploadTask
,可监听上传进度变化事件,以及取消上传任务。
uploadTask 对象的方法列表
方法 | 参数 | 说明 |
---|---|---|
onProgressUpdate | callback | 监听上传进度变化事件 |
offProgressUpdate | callback | 取消监听上传进度变化事件 |
onHeadersReceived | callback | 监听 HTTP Response Header 事件。会比请求完成事件更早 |
offHeadersReceived | callback | 取消监听 HTTP Response Header 事件 |
abort | 无 | 中断上传任务 |
onProgressUpdate参数说明
function callback
上传进度变化事件的回调函数
callback参数说明
Object res
参数 | 类型 | 说明 |
---|---|---|
progress | number | 上传进度百分比 |
totalBytesSent | number | 已经上传的数据长度,单位 Bytes |
totalBytesExpectedToSend | number | 预期需要上传的数据总长度,单位 Bytes |
offProgressUpdate参数说明
function callback
上传进度变化事件的回调函数
onHeadersReceived参数说明
function callback
HTTP Response Header 事件的回调函数
callback参数说明
Object res
参数 | 类型 | 说明 |
---|---|---|
header | object | 开发者服务器返回的 HTTP Response Header |
offHeadersReceived参数说明
function callback
HTTP Response Header 事件的回调函数
示例代码
bl.chooseImage({
success (res) {
const tempFilePaths = res.tempFilePaths
const uploadTask = bl.uploadFile({
url: 'https://example.bilibili.com/upload', //仅为示例,非真实的接口地址
filePath: tempFilePaths[0],
name: 'file',
formData: {
'user': 'test'
},
success (res){
const data = res.data
//do something
}
})
uploadTask.onProgressUpdate((res) => {
console.log('上传进度', res.progress)
console.log('已经上传的数据长度', res.totalBytesSent)
console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)
})
uploadTask.abort() // 取消上传任务
}
})