2023-04-15 16:21:54 +08:00
|
|
|
|
---
|
|
|
|
|
title: 上传文件
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# {{ $frontmatter.title }}
|
|
|
|
|
|
|
|
|
|
::: tip {{ $frontmatter.title }}
|
2023-04-19 21:36:06 +08:00
|
|
|
|
将本地资源上传到服务器。
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
::: warning 注意
|
|
|
|
|
上传文件只能使用 `POST` 方法请求,并将请求配置项 `upload` 设置为 `true`。
|
2023-04-15 16:21:54 +08:00
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
## 普通的上传请求
|
|
|
|
|
|
|
|
|
|
可以将本地资源上传到服务器。
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
2023-04-19 21:36:06 +08:00
|
|
|
|
axios('https://api.com/test', {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
upload: true,
|
|
|
|
|
data: {
|
|
|
|
|
// 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
|
|
|
|
|
name: 'fileName',
|
|
|
|
|
|
|
|
|
|
// 要上传文件资源的路径 (本地路径)
|
|
|
|
|
filePath: '你的本地路径',
|
|
|
|
|
},
|
|
|
|
|
})
|
2023-04-15 16:21:54 +08:00
|
|
|
|
.then((response) => {
|
|
|
|
|
const {
|
|
|
|
|
// 开发者服务器返回的数据
|
|
|
|
|
data,
|
|
|
|
|
} = response;
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
// 失败之后做些什么
|
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 携带 `formData` 的上传请求
|
|
|
|
|
|
|
|
|
|
也可以携带额外的 `formData` 发送给服务端。
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
2023-04-19 21:36:06 +08:00
|
|
|
|
axios('https://api.com/test', {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
upload: true,
|
|
|
|
|
data: {
|
|
|
|
|
// 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
|
|
|
|
|
name: 'fileName',
|
|
|
|
|
|
|
|
|
|
// 要上传文件资源的路径 (本地路径)
|
|
|
|
|
filePath: '你的本地路径',
|
|
|
|
|
|
|
|
|
|
// 这是额外的 formData 属性
|
|
|
|
|
id: 1,
|
|
|
|
|
|
|
|
|
|
// 这是额外的 formData 属性
|
|
|
|
|
user: '123',
|
|
|
|
|
},
|
|
|
|
|
})
|
2023-04-15 16:21:54 +08:00
|
|
|
|
.then((response) => {
|
|
|
|
|
const {
|
|
|
|
|
// 开发者服务器返回的数据
|
|
|
|
|
data,
|
|
|
|
|
} = response;
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
// 失败之后做些什么
|
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 监听上传进度
|
|
|
|
|
|
|
|
|
|
也可以监听上传进度变化。
|
|
|
|
|
|
|
|
|
|
```ts
|
|
|
|
|
import axios from 'axios-miniprogram';
|
|
|
|
|
|
2023-04-19 21:36:06 +08:00
|
|
|
|
axios('https://api.com/test', {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
upload: true,
|
|
|
|
|
data: {
|
|
|
|
|
// 文件对应的 key,开发者在服务端可以通过这个 key 获取文件的二进制内容
|
|
|
|
|
name: 'fileName',
|
|
|
|
|
|
|
|
|
|
// 要上传文件资源的路径 (本地路径)
|
|
|
|
|
filePath: '你的本地路径',
|
|
|
|
|
|
|
|
|
|
// 这是额外的 formData 属性
|
|
|
|
|
id: 1,
|
|
|
|
|
|
|
|
|
|
// 这是额外的 formData 属性
|
|
|
|
|
user: '123',
|
|
|
|
|
},
|
|
|
|
|
onUploadProgress(event) {
|
|
|
|
|
const {
|
2023-04-20 21:49:26 +08:00
|
|
|
|
// 上传进度百分比
|
2023-04-19 21:36:06 +08:00
|
|
|
|
progress,
|
|
|
|
|
|
2023-04-20 21:49:26 +08:00
|
|
|
|
// 已经上传的数据长度,单位 Bytes
|
2023-04-19 21:36:06 +08:00
|
|
|
|
totalBytesSent,
|
|
|
|
|
|
2023-04-20 21:49:26 +08:00
|
|
|
|
// 预期需要上传的数据总长度,单位 Bytes
|
2023-04-19 21:36:06 +08:00
|
|
|
|
totalBytesExpectedToSend,
|
|
|
|
|
} = event;
|
|
|
|
|
},
|
|
|
|
|
})
|
2023-04-15 16:21:54 +08:00
|
|
|
|
.then((response) => {
|
|
|
|
|
const {
|
|
|
|
|
// 开发者服务器返回的数据
|
|
|
|
|
data,
|
|
|
|
|
} = response;
|
|
|
|
|
})
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
// 失败之后做些什么
|
|
|
|
|
});
|
|
|
|
|
```
|