浏览代码

feat(uploader): add before-upload in uploader(taro) (#862)

HaiWei Lian 4 年之前
父节点
当前提交
66f362e0ac
共有 2 个文件被更改,包括 15 次插入2 次删除
  1. 1 0
      src/packages/__VUE/uploader/doc.taro.md
  2. 14 2
      src/packages/__VUE/uploader/index.taro.vue

+ 1 - 0
src/packages/__VUE/uploader/doc.taro.md

@@ -189,6 +189,7 @@ setup() {
 | xhr-state         | 接口响应的成功状态(status)值                                                                                         | Number                            | 200                       |
 | xhr-state         | 接口响应的成功状态(status)值                                                                                         | Number                            | 200                       |
 | disabled          | 是否禁用文件上传                                                                                                       | Boolean                           | false                     |
 | disabled          | 是否禁用文件上传                                                                                                       | Boolean                           | false                     |
 | timeout           | 超时时间,单位为毫秒                                                                                                   | Number丨String                    | 1000 * 30                 |
 | timeout           | 超时时间,单位为毫秒                                                                                                   | Number丨String                    | 1000 * 30                 |
+| before-upload     | 上传前的函数需要返回一个`Promise`对象                                                                                                                                                  | Function                          | null             |
 | before-delete     | 除文件时的回调,返回值为 false 时不移除。支持返回一个 `Promise` 对象,`Promise` 对象 resolve(false) 或 reject 时不移除 | Function(file): boolean 丨Promise | -                         |
 | before-delete     | 除文件时的回调,返回值为 false 时不移除。支持返回一个 `Promise` 对象,`Promise` 对象 resolve(false) 或 reject 时不移除 | Function(file): boolean 丨Promise | -                         |
 
 
 
 

+ 14 - 2
src/packages/__VUE/uploader/index.taro.vue

@@ -119,6 +119,10 @@ export default create({
     xhrState: { type: [Number, String], default: 200 },
     xhrState: { type: [Number, String], default: 200 },
     disabled: { type: Boolean, default: false },
     disabled: { type: Boolean, default: false },
     autoUpload: { type: Boolean, default: true },
     autoUpload: { type: Boolean, default: true },
+    beforeUpload: {
+      type: Function,
+      default: null
+    },
     beforeDelete: {
     beforeDelete: {
       type: Function,
       type: Function,
       default: (file: FileItem, files: FileItem[]) => {
       default: (file: FileItem, files: FileItem[]) => {
@@ -292,8 +296,16 @@ export default create({
     const onChange = (res: Taro.chooseImage.SuccessCallbackResult) => {
     const onChange = (res: Taro.chooseImage.SuccessCallbackResult) => {
       // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
       // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
       const { tempFilePaths, tempFiles } = res;
       const { tempFilePaths, tempFiles } = res;
-      const _files: Taro.chooseImage.ImageFile[] = filterFiles(tempFiles);
-      readFile(_files);
+
+      if (props.beforeUpload) {
+        props.beforeUpload(tempFiles).then((f: Array<Taro.chooseImage.ImageFile>) => {
+          const _files: Taro.chooseImage.ImageFile[] = filterFiles(f);
+          readFile(_files);
+        });
+      } else {
+        const _files: Taro.chooseImage.ImageFile[] = filterFiles(tempFiles);
+        readFile(_files);
+      }
 
 
       emit('change', {
       emit('change', {
         fileList
         fileList