# selectFiles

选择文件 

## API 调用

### QN.app.invoke({api:'selectFiles', query})

#### API 调用入参

参数名             | 类型       | 是否可选 | 默认值 | 含义
:-------------- | :------- | :--- | :-- | :-----------------------------------------------------------------------------------------------------------------------
`query`         | `Object` |      |     |
`query.actions`  | `string` |  可选    |  0,1,2 | 文件源： 0拍照 1相册 2云盘
`query.limit`  | `number` |  可选    |  5 | 可选择文件最大数
`query.maxWidth`  | `number` |  可选    |  100 | 最大的宽度，只对拍照、相册图片有效
`query.maxHeight`  | `number` |  可选    |  100 | 最大的高度，只对拍照、相册图片有效
`query.representation`  | `number` |  可选    |  0.8 | 图片质量精度，范围：0.0-1.0，只对拍照、相册图片有效
`query.filetype`  | `enum` |  可选    |  1 | 文件过滤 IMG(1), DOC(2), TXT(3), MUSIC(4), VIDEO(5), ZIP(6); 注意：只对云盘进行过滤


#### API 响应结果

参数名      | 类型  | 示例 | 含义
:------- | :-- | :----- | :---
`result` | `*` |        | 请求响应
`query.res`  | `string []` |  <need>    |  <default> | uris每个元素都是一个String类型的uri，目前uri格式支持4种： i. 文件路径：file://localpath=%@ ii. 文件流：stream://data=%@ iii. 云空间：cloud://spaceid=%@&fileid=% iv. 网络文件：web://url=%@ 注意：	1. 以上的（i，iii, iv）的value（即上所指的%@）都需要url code编码，另（ii）文件流需要先进行base64编码，再进行urlcode编码 2. 文件流（ii）格式容量大小限定在5M以内
`query.ext`  | `string []` |  <need>    |  <default> | ext中保存的是和res中资源一一对应的预览地址，目前仅本地文件会真是存在预览地址
`query.resNew`  | `object []` |  <need>    |  <default> | 新的数据格式，从千牛5.10.2开始支持，resNew提供老字段没有的信息
`query.=== width`  | `number` |  <need>    |  <default> | 如果文件是图片，则返回图片的宽，单位像素
`query.=== height`  | `number` |  <need>    |  <default> | 如果文件是图片，则返回图片的高，单位像素
`query.=== size`  | `number` |  <need>    |  <default> | 如果文件是图片，则返回图片的大小，单位byte
`query.=== uri`  | `string` |  <need>    |  <default> | 所有类型文件都有，uri地址，同原参数res中的元素


#### 调用示例

```javascript
QN.app.invoke({
      api:'selectFiles',
      query:{
                actions : '0,1,2'  ,
                    limit : 5  ,
                    maxWidth : 100  ,
                    maxHeight : 100  ,
                    representation : 0.8  ,
                    filetype : '1'  
            
      }
}).then(result => {
    console.log(result);
}, error => {
    console.log(error);
});
    
```
