# 文件上传示例

移动APP开发中,根据手机APP设备中隐私安全协议要求, 一切js获取手机设备系统能力权限被禁止,包括文件系统、相机相册等权限。其中input标签 type=file 的能力被限制, 包括其他vant-ui、cube-ui等uploader组件不生效。

根据合规需求完成文件上传功能需要两个组件,分别是文件选择器 (opens new window)文件上传 (opens new window)组件,如下:

# 文件选择器

# 1、组件广场文件选择器

# 2、组件详情页使用说明
# 3、组件使用示例
//type 选择文件类型 0:图片;1:视频;2:音频;3:其他类型文件 缺省选择图片(type选3时返回的message只有一个路径)
//maxCount 最大文件选择数 缺省是5
//capture 选图时是否支持拍照,文件类型为图片时才有效。(拍照返回的message只有一个路径)
let params = {
 type: 0,
 maxCount: 5
 capture: false
};
// 成功调用之后返回选择的文件路径列表
hatom.native('FilePicker.chooseFile',
 res => {
  console.log(res);
}, params);

输入参数说明:

参数 类型 必填 描述
type number 0:图片;1:视频;2:音频;3:其他类型文件 缺省选择图片(type选3时返回的message只有一个路径)
maxCount number 最大文件选择数 缺省是5
capture bool 选图时是否支持拍照,文件类型为图片时才有效。(拍照返回的message只有一个路径)

返回示例:

[
  {
    "addDate":1611281620,
    "duration":15778,
    "fileName":"media_10_1_.mp3",
    "mimeType":"audio/mpeg",
    "path":"http://localhost:8080/storage/emulated/0/万达院线/SeatIcons/media_10_1_.mp3",
    "size":252479
  },
  {
    "addDate":1611281620,
    "duration":13767,
    "fileName":"media_9_1_.mp3",
    "mimeType":"audio/mpeg",
    "path":"http://localhost:8080/storage/emulated/0/万达院线/SeatIcons/media_9_1_.mp3",
    "size":220296
  }
]

参数 类型 描述
addDate long 创建时间(时间戳)
duration long 时长(选择图片时该值为0,单位毫秒)
fileName string 文件名
mimeType string 文件类型
path string 文件手机内存中路径
size long 文件大小(字节)

# 文件上传组件

# 1、组件广场文件上传器

# 2、组件详情页使用说明
# 3、组件使用示例
//netRequestInfo
// url: string前端开发者自己的文件上传服务请求地址
// token: string 请求token,放在请求头中。
// timeOut: long 请求超时时间,单位毫秒。
// headers: map 扩展请求头,长度不限,该字段下键值对会依次加入到请求头中。
// extension: string 扩展字段,透传自定义参数,string。在表单extension字段下。
// filePathList: list 上传文件列表,支持并发上传,上传的文件表单数据在files字段下,后台开发人员解析表单文件时务必注意。
// fileLimitSize: int 文件上传大小限制,单位MB。超出限制的文件将直接报错,不再上传。
let params = {
 netRequestInfo: {
  "url": "http://10.17.80.235:8891/upload",
  "token": "",
  timeOut: '180000',
  "headers": {
    "X-CSRF-TOKEN""",
    "X-CSRF-TOKEN""",
    ...
   },
  "bodys": {
    "body1""",
    "body2""",
     ...
  },
  "extension": """fileLimitSize": 5
 },
 filePathList: [
  "/sdcard/DCIM/Camera/IMG_20200508_104825.jpg",
  "/sdcard/DCIM/Camera/IMG_20200508_104826.jpg"
 ]
};
// 成功调用之后返回选择的文件路径及其请求的接口返回列表
hatom.native('FileUploadPlugin.upLoadFile',
 res => {
  console.log(res);
}, params);

输入参数说明:

参数 类型 必填 描述
url string 前端开发者自己的文件上传服务请求地址
token string 请求token,放在请求头中
timeOut number 请求超时时间,单位毫秒
headers object 扩展请求头,长度不限,该字段下键值对会依次加入到请求头中
extension string 扩展字段,透传自定义参数,string。在表单extension字段下
filePathList array 上传文件列表,支持并发上传,上传的文件表单数据在files字段下,后台开发人员解析表单文件时务必注意
fileLimitSize number 文件上传大小限制,单位MB。超出限制的文件将直接报错,不再上传

输出参数说明:

参数 类型 描述
code string 返回码 0表示成功
message string 返回值 json字符串