# 上传下载 request
# 导入模块
import request from '@system.request';
# request.upload(OBJECT)
上传文件。
- 参数
 
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| url | string | 是 | 资源地址。 | 
| header | Object | 否 | 请求头。 | 
| method | string | 否 | 请求方法:POST、PUT。缺省POST。 | 
| files | Array<File> |  是 | 待上传文件列表。请使用multipart/form-data进行提交。 | 
| data | Array<RequestData> |  否 | 请求的表单数据。 | 
| success | Function | 否 | 成功回调。 | 
| fail | Function | 否 | 失败回调。 | 
| complete | Function | 否 | 执行结束后的回调。 | 
表2 File
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| filename | string | 否 | multipart 提交时,请求头中的文件名。 | 
| name | string | 否 | multipart 提交时,表单项目的名称,缺省为file。 | 
| uri | string | 是 | 文件的本地存储路径(路径使用方式请参考存储目录定义)。 | 
| type | string | 否 | 文件的内容类型,默认根据文件名或路径的后缀获取。 | 
表3 RequestData
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| name | string | 是 | 表示form 元素的名称。 | 
| value | string | 是 | 表示form 元素的值。 | 
- success返回值:
 
| 参数名 | 类型 | 说明 | 
|---|---|---|
| code | number | 服务器返回的状态码。 | 
| data | string | 服务器返回的内容。根据返回头内容中的type决定该值的类型。 | 
| headers | Object | 服务器返回的返回头内容。 | 
- 示例
 
request.upload({
  url: 'http://www.example.com',
  files: [
    {
      uri: 'internal://xxx/xxx/test',
      name: 'file1',
      filename: 'test.png'
    }
  ],
  data: [
    {
      name: 'param1',
      value: 'value1'
    }
  ],
  success: function(data) {
    console.log('handling success')
  },
  fail: function(data, code) {
    console.log(`handling fail, code = ${code}`)
  }
})
# request.download(OBJECT)
下载文件。
- 参数
 
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| url | string | 是 | 资源地址。 | 
| requestId | string | 否 | 自定义请求id,可用于中断下载。 | 
| header | Object | 否 | 请求头。 | 
| description | string | 否 | 资源地址的下载描述,默认为文件名称。 | 
| filename | string | 否 | 本次下载文件的名称及路径。默认从本次请求或资源地址中获取。 | 
| success | Function | 否 | 成功回调。 | 
| fail | Function | 否 | 失败回调。 | 
| complete | Function | 否 | 执行结束后的回调。 | 
- success返回值
 
| 参数名 | 类型 | 说明 | 
|---|---|---|
| token | string | 表示下载的 token,获取下载状态的依据。 | 
- 示例
 
request.download({
  url: 'http://www.example.com',
  filename: "internal://cache/imgs/1.png",
  success: function(data) {
    console.log(`handling success${data.token}`)
  },
  fail: function(data, code) {
    console.log(`handling fail, code = ${code}`)
  }
})
# request.onDownloadComplete(OBJECT)
监听下载任务。
- 参数
 
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| token | String | 是 | download 接口返回的 token | 
| success | Function | 否 | 成功返回的回调函数 | 
| fail | Function | 否 | 失败的回调函数 | 
| complete | Function | 否 | 结束的回调函数(调用成功、失败都会执行) | 
- success返回值
 
| 参数名 | 类型 | 说明 | 
|---|---|---|
| uri | string | 表示下载文件的uri。 | 
- fail返回错误代码
 
| 错误码 | 说明 | 
|---|---|
| 1000 | 下载失败 | 
| 1001 | 下载任务不存在 | 
- 示例
 
request.onDownloadComplete({
  token: '123',
  success: function(data) {
    console.log(`handling success${data.uri}`)
  },
  fail: function(data, code) {
    console.log(`handling fail, code = ${code}`)
  }
})
完整的下载示例为
request.download({
  url: 'http://www.example.com', // 要下载的资源路径
  filename: "internal://cache/imgs/1.png", // 下载后文件存在路径,这里是放在cache下的imgs目录下,文件名为1.png
  success: data => {
      console.log(`download success`)
      request.onDownloadComplete({
          token: data.token,
          success: () => {
              console.log(`onDownloadComplete success`)
          },
          fail: (data, code) => {
              console.log(`onDownloadComplete fail code = ${code}`)
          }
      })
  },
  fail: (data, code) => {
      console.log(`download fail, code = ${code}`)
  }
})
# request.cancel(OBJECT)
取消下载任务。
- 参数
 
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| requestId | String | 是 | download 接口传入的请求id | 
← 弹窗 prompt 数据请求 fetch →