|
11 | 11 | :accept="accept"
|
12 | 12 | :capture="capture"
|
13 | 13 | :disabled="disabled"
|
14 |
| - :webkitdirectory="directory && features.directory" |
15 |
| - :allowdirs="directory && features.directory" |
16 |
| - :directory="directory && features.directory" |
| 14 | + :webkitdirectory="iDirectory" |
| 15 | + :allowdirs="iDirectory" |
| 16 | + :directory="iDirectory" |
17 | 17 | :multiple="multiple && features.html5"
|
18 | 18 | @change="inputOnChange"
|
19 | 19 | />
|
@@ -406,6 +406,12 @@ export default defineComponent({
|
406 | 406 | exts = exts.map(function(value) { return value.trim() }).filter(function(value) { return value })
|
407 | 407 | return new RegExp('\\.(' + exts.join('|').replace(/\./g, '\\.') + ')$', 'i')
|
408 | 408 | },
|
| 409 | + iDirectory() :any { |
| 410 | + if (this.directory && this.features.directory) { |
| 411 | + return true |
| 412 | + } |
| 413 | + return undefined |
| 414 | + } |
409 | 415 | },
|
410 | 416 | watch: {
|
411 | 417 | active(active: boolean) {
|
@@ -625,13 +631,16 @@ export default defineComponent({
|
625 | 631 | const maximumValue = this.iMaximum
|
626 | 632 |
|
627 | 633 |
|
| 634 | +
|
| 635 | + |
628 | 636 | // @ts-ignore
|
629 | 637 | const entrys: any = el.webkitEntries || el.entries || undefined
|
630 | 638 | if (entrys?.length) {
|
631 | 639 | return this.getFileSystemEntry(entrys).then((files) => {
|
632 | 640 | return this.add(files) as VueUploadItem[]
|
633 | 641 | })
|
634 | 642 | }
|
| 643 | +
|
635 | 644 |
|
636 | 645 | if (el.files) {
|
637 | 646 | for (let i = 0; i < el.files.length; i++) {
|
@@ -956,14 +965,14 @@ export default defineComponent({
|
956 | 965 | return Promise.resolve(file)
|
957 | 966 | }
|
958 | 967 | // 后缀
|
959 |
| - if (file.name && this.iExtensions) { |
| 968 | + if (file.name && this.iExtensions && file.type !== "text/directory") { |
960 | 969 | if (file.name.search(this.iExtensions) === -1) {
|
961 | 970 | return Promise.reject(new Error('extension'))
|
962 | 971 | }
|
963 | 972 | }
|
964 | 973 |
|
965 | 974 | // 大小
|
966 |
| - if (this.size > 0 && file.size !== undefined && file.size >= 0 && file.size > this.size) { |
| 975 | + if (this.size > 0 && file.size !== undefined && file.size >= 0 && file.size > this.size && file.type !== "text/directory") { |
967 | 976 | return Promise.reject(new Error('size'))
|
968 | 977 | }
|
969 | 978 |
|
@@ -1036,7 +1045,7 @@ export default defineComponent({
|
1036 | 1045 | form.append(key, value)
|
1037 | 1046 | }
|
1038 | 1047 | }
|
1039 |
| - // @ts-ignore |
| 1048 | +
|
1040 | 1049 | // Moved file.name as the first option to set the filename of the uploaded file, since file.name
|
1041 | 1050 | // contains the full (relative) path of the file not just the filename as in file.file.filename
|
1042 | 1051 | // @ts-ignore
|
|
0 commit comments