Skip to content

Commit 8c5d55c

Browse files
committed
feat: support onFileAdded and onFilesAdded
1 parent 4abec57 commit 8c5d55c

File tree

3 files changed

+71
-18
lines changed

3 files changed

+71
-18
lines changed

README.md

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,30 @@ app.mount('#app')
5454

5555
``` vue
5656
<template>
57-
<uploader :options="options" class="uploader-example">
58-
<uploader-unsupport></uploader-unsupport>
57+
<uploader
58+
:options="options"
59+
:file-status-text="statusText"
60+
class="uploader-example"
61+
ref="uploaderRef"
62+
@file-complete="fileComplete"
63+
@complete="complete"
64+
>
65+
<!-- <uploader-unsupport></uploader-unsupport>
5966
<uploader-drop>
6067
<p>Drop files here to upload or</p>
6168
<uploader-btn>select files</uploader-btn>
6269
<uploader-btn :attrs="attrs">select images</uploader-btn>
6370
<uploader-btn :directory="true">select folder</uploader-btn>
6471
</uploader-drop>
65-
<uploader-list></uploader-list>
72+
<uploader-list></uploader-list> -->
6673
</uploader>
6774
</template>
6875
6976
<script>
7077
import { nextTick, ref, onMounted } from 'vue'
7178
export default {
7279
setup () {
73-
const uploader = ref(null)
80+
const uploaderRef = ref(null)
7481
const options = {
7582
target: '//localhost:3000/upload', // '//jsonplaceholder.typicode.com/posts/',
7683
testChunks: false
@@ -93,11 +100,11 @@ app.mount('#app')
93100
}
94101
onMounted(() => {
95102
nextTick(() => {
96-
window.uploader = uploader.value.uploader
103+
window.uploader = uploaderRef.value.uploader
97104
})
98105
})
99106
return {
100-
uploader,
107+
uploaderRef,
101108
options,
102109
attrs,
103110
statusText,
@@ -212,6 +219,18 @@ Root component.
212219
}
213220
```
214221

222+
* `onFileAdded(file) {Function}`
223+
224+
After `1.0.0`.
225+
226+
Called when file is added, this function is used for file validation. To reject(filter) this file you should `return false`.
227+
228+
* `onFilesAdded(files, fileList) {Function}`
229+
230+
After `1.0.0`.
231+
232+
Called when files are added, this function is used for files validation. To reject(filter) these files you should `return false`.
233+
215234
#### Events
216235

217236
See [simple-uploader.js uploader/events](https://github.com/simple-uploader/Uploader#events)

README_zh-CN.md

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,30 @@ app.mount('#app')
5757

5858
``` vue
5959
<template>
60-
<uploader :options="options" class="uploader-example">
61-
<uploader-unsupport></uploader-unsupport>
60+
<uploader
61+
:options="options"
62+
:file-status-text="statusText"
63+
class="uploader-example"
64+
ref="uploaderRef"
65+
@file-complete="fileComplete"
66+
@complete="complete"
67+
>
68+
<!-- <uploader-unsupport></uploader-unsupport>
6269
<uploader-drop>
6370
<p>Drop files here to upload or</p>
6471
<uploader-btn>select files</uploader-btn>
6572
<uploader-btn :attrs="attrs">select images</uploader-btn>
6673
<uploader-btn :directory="true">select folder</uploader-btn>
6774
</uploader-drop>
68-
<uploader-list></uploader-list>
75+
<uploader-list></uploader-list> -->
6976
</uploader>
7077
</template>
7178
7279
<script>
7380
import { nextTick, ref, onMounted } from 'vue'
7481
export default {
7582
setup () {
76-
const uploader = ref(null)
83+
const uploaderRef = ref(null)
7784
const options = {
7885
target: '//localhost:3000/upload', // '//jsonplaceholder.typicode.com/posts/',
7986
testChunks: false
@@ -82,11 +89,11 @@ app.mount('#app')
8289
accept: 'image/*'
8390
}
8491
const statusText = {
85-
success: '成功了',
86-
error: '出错了',
87-
uploading: '上传中',
88-
paused: '暂停中',
89-
waiting: '等待中'
92+
success: 'success',
93+
error: 'error',
94+
uploading: 'uploading',
95+
paused: 'paused',
96+
waiting: 'waiting'
9097
}
9198
const complete = () => {
9299
console.log('complete', arguments)
@@ -96,11 +103,11 @@ app.mount('#app')
96103
}
97104
onMounted(() => {
98105
nextTick(() => {
99-
window.uploader = uploader.value.uploader
106+
window.uploader = uploaderRef.value.uploader
100107
})
101108
})
102109
return {
103-
uploader,
110+
uploaderRef,
104111
options,
105112
attrs,
106113
statusText,
@@ -216,6 +223,19 @@ app.mount('#app')
216223
}
217224
```
218225

226+
227+
* `onFileAdded(file) {Function}`
228+
229+
`1.0.0+` 版本可用。
230+
231+
当文件添加的时候调用,一般用于文件的校验。如果你想过滤掉当前文件,那么你应该在此函数中 `return false`
232+
233+
* `onFilesAdded(files, fileList) {Function}`
234+
235+
`1.0.0+` 版本可用。
236+
237+
当一批文件添加的时候调用,一般用于的校验。如果你想过滤掉这些文件,那么你应该在此函数中 `return false`
238+
219239
#### 事件
220240

221241
参见 [simple-uploader.js uploader 事件](https://github.com/simple-uploader/Uploader/blob/develop/README_zh-CN.md#事件)

src/components/uploader.vue

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@
5252
waiting: 'waiting'
5353
}
5454
}
55-
}
55+
},
56+
onFileAdded: Function,
57+
onFilesAdded: Function
5658
},
5759
setup (props, { emit }) {
5860
const uploaderList = ref(null)
@@ -66,13 +68,25 @@
6668
}
6769
const fileAdded = (file) => {
6870
const _file = reactive(file)
71+
if (props.onFileAdded) {
72+
const ignored = props.onFileAdded(_file)
73+
if (ignored === false) {
74+
return false
75+
}
76+
}
6977
emit(kebabCase(FILE_ADDED_EVENT), _file)
7078
if (_file.ignored) {
7179
// is ignored, filter it
7280
return false
7381
}
7482
}
7583
const filesAdded = (files, fileList) => {
84+
if (props.onFilesAdded) {
85+
const ignored = props.onFilesAdded(files, fileList)
86+
if (ignored === false) {
87+
return false
88+
}
89+
}
7690
emit(kebabCase(FILES_ADDED_EVENT), files, fileList)
7791
if (files.ignored || fileList.ignored) {
7892
// is ignored, filter it

0 commit comments

Comments
 (0)