第18讲 : uni-app 上传(图片上传实战)
最后更新于:2022-04-02 07:28:24
## uni.uploadFile(OBJECT)
将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data。
如页面通过 uni.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。
**OBJECT 参数说明**
```
参数名 类型 必填 说明 平台支持
url String 是 开发者服务器 url
files Aarry 否 需要上传的文件列表。使用 files 时,filePath 和 name 不生效。 5+App
filePath String 是 要上传文件资源的路径。
name String 是 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
header Object 否 HTTP 请求 Header, header 中不能设置 Referer
formData Object 否 HTTP 请求中其他额外的 form data
success Function 否 接口调用成功的回调函数
fail Function 否 接口调用失败的回调函数
complete Function 否 接口调用结束的回调函数(调用成功、失败都会执行)
```
**files参数说明
**
```
files 参数是一个 file 对象的数组,file 对象的结构如下:
name String 否 multipart 提交时,表单的项目名,默认为 file
uri String 是 文件的本地地址
```
**success 返回参数说明**
```
参数 类型 说明
data String 开发者服务器返回的数据
statusCode Number 开发者服务器返回的 HTTP 状态码
```
**返回值**
返回一个 uploadTask 对象,通过 uploadTask,可监听上传进度变化事件,以及取消上传任务。
### uploadTask 对象的方法列表
```
onProgressUpdate callback 监听上传进度变化
abort 中断上传任务
onProgressUpdate 返回参数说明
```
```
参数 类型 说明
progress Number 上传进度百分比
totalBytesSent Number 已经上传的数据长度,单位 Bytes
totalBytesExpectedToSend Number 预期需要上传的数据总长度,单位 Bytes
```
**实战:选择一个照片上传(带进度条)**
```
```
**后端文件接收代码(php 版)**
```
getExeName($_FILES['file']['name']);
if($exename != 'png' && $exename != 'jpg' && $exename != 'gif'){
exit('不允许的扩展名');
}
$imageSavePath = uniqid().'.'.$exename;
if(move_uploaded_file($_FILES['file']['tmp_name'], $imageSavePath)){
echo $imageSavePath;
}
}
}
public function getExeName($fileName){
$pathinfo = pathinfo($fileName);
return strtolower($pathinfo['extension']);
}
}
```
';