File tree Expand file tree Collapse file tree 5 files changed +60
-9
lines changed Expand file tree Collapse file tree 5 files changed +60
-9
lines changed Original file line number Diff line number Diff line change @@ -124,7 +124,7 @@ export default {
124
124
| before-delete | Hook before delete the file, return false to stop reading the file, can return Promise | * Function* | - | - |
125
125
| max-size | Max size of file | * number* | - | - |
126
126
| max-count | Max count of image | * number* | - | - |
127
- | result-type | Type of file read result, can be set to ` dataUrl ` ` text ` | * string* | ` dataUrl ` | - |
127
+ | result-type | Type of file read result, can be set to ` file ` ` text ` | * string* | ` dataUrl ` | 2.2.7 |
128
128
| upload-text | Upload text | * string* | - | - |
129
129
| image-fit | Preview image fit mode | * string* | ` cover ` | 2.1.5 |
130
130
@@ -149,3 +149,11 @@ export default {
149
149
| ------| ------| ------|
150
150
| file | File object | * object* |
151
151
| detail | Detail info, contains name and index | * object* |
152
+
153
+ ### ResultType
154
+
155
+ | Value | Description |
156
+ | ------| ------|
157
+ | file | Result contains File object |
158
+ | text | Result contains File object and text content |
159
+ | dataUrl | Result contains File object and base64 content |
Original file line number Diff line number Diff line change @@ -140,7 +140,7 @@ export default {
140
140
| before-delete | 文件删除前的回调函数,返回` false ` 可终止文件读取,支持返回` Promise ` | * Function* | - | - |
141
141
| max-size | 文件大小限制,单位为` byte ` | * number* | - | - |
142
142
| max-count | 文件上传数量限制 | * number* | - | - |
143
- | result-type | 文件读取结果类型,可选值为` text ` | * string* | ` dataUrl ` | - |
143
+ | result-type | 文件读取结果类型,可选值为` file ` ` text ` | * string* | ` dataUrl ` | 2.2.7 |
144
144
| upload-text | 上传区域文字提示 | * string* | - | - |
145
145
| image-fit | 预览图裁剪模式,可选值见 [ Image] ( #/zh-CN/image ) 组件 | * string* | ` cover ` | 2.1.5 |
146
146
@@ -167,3 +167,13 @@ before-read、after-read、before-delete 执行时会传递以下回调参数:
167
167
| ------| ------| ------|
168
168
| file | 文件解析后的 file 对象 | * object* |
169
169
| detail | 额外信息,包含 name 和 index 字段 | * object* |
170
+
171
+ ### ResultType 可选值
172
+
173
+ ` result-type ` 字段表示文件读取结果的类型,上传大文件时,建议使用 file 类型,避免卡顿。
174
+
175
+ | 值 | 描述 |
176
+ | ------| ------|
177
+ | file | 结果仅包含 File 对象 |
178
+ | text | 结果包含 File 对象,以及文件的文本内容 |
179
+ | dataUrl | 结果包含 File 对象,以及文件对应的 base64 编码 |
Original file line number Diff line number Diff line change @@ -114,16 +114,27 @@ export default createComponent({
114
114
}
115
115
116
116
Promise . all ( files . map ( file => readFile ( file , this . resultType ) ) ) . then ( contents => {
117
- const fileList = files . map ( ( file , index ) => ( {
118
- file,
119
- content : contents [ index ]
120
- } ) ) ;
117
+ const fileList = files . map ( ( file , index ) => {
118
+ const result = { file } ;
119
+
120
+ if ( contents [ index ] ) {
121
+ result . content = contents [ index ] ;
122
+ }
123
+
124
+ return result ;
125
+ } ) ;
121
126
122
127
this . onAfterRead ( fileList , oversize ) ;
123
128
} ) ;
124
129
} else {
125
130
readFile ( files , this . resultType ) . then ( content => {
126
- this . onAfterRead ( { file : files , content } , oversize ) ;
131
+ const result = { file : files } ;
132
+
133
+ if ( content ) {
134
+ result . content = content ;
135
+ }
136
+
137
+ this . onAfterRead ( result , oversize ) ;
127
138
} ) ;
128
139
}
129
140
} ,
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ test('disabled', () => {
37
37
expect ( afterRead ) . toHaveBeenCalledTimes ( 0 ) ;
38
38
} ) ;
39
39
40
- it ( 'read text' , done => {
40
+ it ( 'result-type as text' , done => {
41
41
const wrapper = mount ( Uploader , {
42
42
propsData : {
43
43
resultType : 'text' ,
@@ -51,6 +51,21 @@ it('read text', done => {
51
51
wrapper . vm . onChange ( file ) ;
52
52
} ) ;
53
53
54
+ it ( 'result-type as file' , done => {
55
+ const wrapper = mount ( Uploader , {
56
+ propsData : {
57
+ resultType : 'file' ,
58
+ afterRead : readFile => {
59
+ expect ( readFile . file ) . toBeTruthy ( ) ;
60
+ expect ( readFile . content ) . toBeFalsy ( ) ;
61
+ done ( ) ;
62
+ }
63
+ }
64
+ } ) ;
65
+
66
+ wrapper . vm . onChange ( file ) ;
67
+ } ) ;
68
+
54
69
it ( 'set input name' , done => {
55
70
const wrapper = mount ( Uploader , {
56
71
propsData : {
Original file line number Diff line number Diff line change
1
+ export type ResultType = 'dataUrl' | 'text' | 'file' ;
2
+
1
3
export function toArray < T > ( item : T | T [ ] ) : T [ ] {
2
4
if ( Array . isArray ( item ) ) {
3
5
return item ;
@@ -6,8 +8,13 @@ export function toArray<T>(item: T | T[]): T[] {
6
8
return [ item ] ;
7
9
}
8
10
9
- export function readFile ( file : File , resultType : string ) {
11
+ export function readFile ( file : File , resultType : ResultType ) {
10
12
return new Promise ( resolve => {
13
+ if ( resultType === 'file' ) {
14
+ resolve ( ) ;
15
+ return ;
16
+ }
17
+
11
18
const reader = new FileReader ( ) ;
12
19
13
20
reader . onload = event => {
You can’t perform that action at this time.
0 commit comments