Add upload directory

master
git 9 years ago
parent 4d43a30f5c
commit 5aae7d586d

@ -107,6 +107,8 @@ npm run build
drop="Boolean (true = $parent) or Element or Css Selector" drop="Boolean (true = $parent) or Element or Css Selector"
dropDirectory="true or false"
extensions="Array or String or Regular" extensions="Array or String or Regular"
post-action="./post.method" post-action="./post.method"
@ -117,6 +119,8 @@ npm run build
multiple="true or false" multiple="true or false"
directory="true or false"
size="max Size" size="max Size"
timeout="3600000" timeout="3600000"

38
dist/example.js vendored

@ -8119,7 +8119,9 @@
multiple: true, multiple: true,
directory: false,
drop: true, drop: true,
dropDirectory: false,
thread: 3, thread: 3,
name: 'file', name: 'file',
@ -8148,6 +8150,15 @@
}, },
methods: { methods: {
addDirectory: function addDirectory() {
var _this = this;
this.directory = true;
this.$nextTick(function () {
_this.$refs.upload.$el.querySelector('input').click();
_this.directory = false;
});
},
filter: function filter(file) { filter: function filter(file) {
if (file.size < 100 * 1024) { if (file.size < 100 * 1024) {
file = this.$refs.upload.update(file, { error: 'size' }); file = this.$refs.upload.update(file, { error: 'size' });
@ -8235,6 +8246,10 @@
default: false default: false
}, },
dropDirectory: {
default: true
},
extensions: { extensions: {
default: Array default: Array
}, },
@ -8255,6 +8270,10 @@
type: Boolean type: Boolean
}, },
directory: {
type: Boolean
},
timeout: { timeout: {
type: Number, type: Number,
default: 0 default: 0
@ -8263,7 +8282,6 @@
size: { size: {
type: Number type: Number
}, },
headers: { headers: {
type: Object, type: Object,
default: Object default: Object
@ -8454,7 +8472,7 @@
file = { file = {
file: file, file: file,
size: file.size, size: file.size,
name: file.name, name: file.webkitRelativePath || file.name,
type: file.type type: file.type
}; };
} }
@ -8521,7 +8539,7 @@
var _file = el.files[i]; var _file = el.files[i];
this.add({ this.add({
size: _file.size, size: _file.size,
name: _file.name, name: _file.webkitRelativePath || _file.name,
type: _file.type, type: _file.type,
file: _file, file: _file,
el: el el: el
@ -8562,7 +8580,7 @@
}); });
}); });
return 1; return 1;
} else if (entry.isDirectory) { } else if (entry.isDirectory && this.dropDirectory) {
var count = 0; var count = 0;
entry.createReader().readEntries(function (entrys) { entry.createReader().readEntries(function (entrys) {
for (var i = 0; i < entrys.length; i++) { for (var i = 0; i < entrys.length; i++) {
@ -10426,6 +10444,7 @@
"name": _vm.$parent.name, "name": _vm.$parent.name,
"id": _vm.$parent.id || _vm.$parent.name, "id": _vm.$parent.id || _vm.$parent.name,
"accept": _vm.$parent.accept, "accept": _vm.$parent.accept,
"webkitdirectory": _vm.$parent.directory && _vm.$parent.mode === 'html5',
"multiple": _vm.$parent.multiple && _vm.$parent.mode === 'html5' "multiple": _vm.$parent.multiple && _vm.$parent.mode === 'html5'
}, },
on: { on: {
@ -10496,11 +10515,13 @@
"extensions": _vm.extensions, "extensions": _vm.extensions,
"accept": _vm.accept, "accept": _vm.accept,
"multiple": _vm.multiple, "multiple": _vm.multiple,
"directory": _vm.directory,
"size": _vm.size || 0, "size": _vm.size || 0,
"thread": _vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread), "thread": _vm.thread < 1 ? 1 : (_vm.thread > 5 ? 5 : _vm.thread),
"headers": _vm.headers, "headers": _vm.headers,
"data": _vm.data, "data": _vm.data,
"drop": _vm.drop "drop": _vm.drop,
"dropDirectory": _vm.dropDirectory
}, },
on: { on: {
"input-file": _vm.inputFile "input-file": _vm.inputFile
@ -10513,6 +10534,13 @@
expression: "files" expression: "files"
} }
}, [_vm._v("\n Add upload files\n ")])], 1), _vm._v(" "), _c('td', [_c('button', { }, [_vm._v("\n Add upload files\n ")])], 1), _vm._v(" "), _c('td', [_c('button', {
on: {
"click": function($event) {
$event.preventDefault();
_vm.addDirectory($event)
}
}
}, [_vm._v("Add upload directory")]), _vm._v(" "), _c('br'), _vm._v("Only support chrome\n ")]), _vm._v(" "), _c('td', [_c('button', {
directives: [{ directives: [{
name: "show", name: "show",
rawName: "v-show", rawName: "v-show",

File diff suppressed because one or more lines are too long

@ -918,6 +918,10 @@ module.exports =
default: false default: false
}, },
dropDirectory: {
default: true
},
extensions: { extensions: {
default: Array default: Array
}, },
@ -938,6 +942,10 @@ module.exports =
type: Boolean type: Boolean
}, },
directory: {
type: Boolean
},
timeout: { timeout: {
type: Number, type: Number,
default: 0 default: 0
@ -946,7 +954,6 @@ module.exports =
size: { size: {
type: Number type: Number
}, },
headers: { headers: {
type: Object, type: Object,
default: Object default: Object
@ -1137,7 +1144,7 @@ module.exports =
file = { file = {
file: file, file: file,
size: file.size, size: file.size,
name: file.name, name: file.webkitRelativePath || file.name,
type: file.type type: file.type
}; };
} }
@ -1204,7 +1211,7 @@ module.exports =
var _file = el.files[i]; var _file = el.files[i];
this.add({ this.add({
size: _file.size, size: _file.size,
name: _file.name, name: _file.webkitRelativePath || _file.name,
type: _file.type, type: _file.type,
file: _file, file: _file,
el: el el: el
@ -1245,7 +1252,7 @@ module.exports =
}); });
}); });
return 1; return 1;
} else if (entry.isDirectory) { } else if (entry.isDirectory && this.dropDirectory) {
var count = 0; var count = 0;
entry.createReader().readEntries(function (entrys) { entry.createReader().readEntries(function (entrys) {
for (var i = 0; i < entrys.length; i++) { for (var i = 0; i < entrys.length; i++) {
@ -3149,6 +3156,7 @@ module.exports =
"name": _vm.$parent.name, "name": _vm.$parent.name,
"id": _vm.$parent.id || _vm.$parent.name, "id": _vm.$parent.id || _vm.$parent.name,
"accept": _vm.$parent.accept, "accept": _vm.$parent.accept,
"webkitdirectory": _vm.$parent.directory && _vm.$parent.mode === 'html5',
"multiple": _vm.$parent.multiple && _vm.$parent.mode === 'html5' "multiple": _vm.$parent.multiple && _vm.$parent.mode === 'html5'
}, },
on: { on: {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -89,17 +89,23 @@ table th,table td {
:extensions="extensions" :extensions="extensions"
:accept="accept" :accept="accept"
:multiple="multiple" :multiple="multiple"
:directory="directory"
:size="size || 0" :size="size || 0"
:thread="thread < 1 ? 1 : (thread > 5 ? 5 : thread)" :thread="thread < 1 ? 1 : (thread > 5 ? 5 : thread)"
:headers="headers" :headers="headers"
:data="data" :data="data"
:drop="drop" :drop="drop"
:dropDirectory="dropDirectory"
v-model="files" v-model="files"
@input-file="inputFile" @input-file="inputFile"
ref="upload"> ref="upload">
Add upload files Add upload files
</file-upload> </file-upload>
</td> </td>
<td>
<button @click.prevent="addDirectory">Add upload directory</button>
<br/>Only support chrome
</td>
<td> <td>
<button v-show="!$refs.upload || !$refs.upload.active" @click.prevent="$refs.upload.active = true" type="button">Start upload</button> <button v-show="!$refs.upload || !$refs.upload.active" @click.prevent="$refs.upload.active = true" type="button">Start upload</button>
<button v-show="$refs.upload && $refs.upload.active" @click.prevent="$refs.upload.active = false" type="button">Stop upload</button> <button v-show="$refs.upload && $refs.upload.active" @click.prevent="$refs.upload.active = false" type="button">Stop upload</button>
@ -184,7 +190,9 @@ export default {
// extensions: /\.(gif|jpe?g|png|webp)$/i, // extensions: /\.(gif|jpe?g|png|webp)$/i,
multiple: true, multiple: true,
directory: false,
drop: true, drop: true,
dropDirectory: false,
thread: 3, thread: 3,
name: 'file', name: 'file',
@ -213,6 +221,16 @@ export default {
}, },
methods: { methods: {
// add Directory
addDirectory() {
this.directory = true
this.$nextTick(() => {
this.$refs.upload.$el.querySelector('input').click()
this.directory = false
})
},
// Custom filter // Custom filter
filter(file) { filter(file) {
// min size // min size

@ -1,7 +1,7 @@
{ {
"name": "vue-upload-component", "name": "vue-upload-component",
"description": "Vue.js file upload component, Support for multiple file uploads, progress, html5, html4, support ie9", "description": "Vue.js file upload component, Support for multiple file uploads, progress, html5, html4, support ie9",
"version": "2.4.0-beta.2", "version": "2.4.0-beta.3",
"author": "LianYue", "author": "LianYue",
"scripts": { "scripts": {
"dev": "webpack-dev-server --inline --hot", "dev": "webpack-dev-server --inline --hot",

@ -46,6 +46,10 @@ export default {
default: false, default: false,
}, },
dropDirectory: {
default: true,
},
extensions: { extensions: {
default: Array, default: Array,
}, },
@ -66,6 +70,10 @@ export default {
type: Boolean, type: Boolean,
}, },
directory: {
type: Boolean,
},
timeout: { timeout: {
type: Number, type: Number,
default: 0, default: 0,
@ -74,7 +82,6 @@ export default {
size: { size: {
type: Number, type: Number,
}, },
headers: { headers: {
type: Object, type: Object,
default: Object, default: Object,
@ -271,7 +278,7 @@ export default {
file = { file = {
file, file,
size: file.size, size: file.size,
name: file.name, name: file.webkitRelativePath || file.name,
type: file.type, type: file.type,
} }
} }
@ -354,7 +361,7 @@ export default {
let file = el.files[i] let file = el.files[i]
this.add({ this.add({
size: file.size, size: file.size,
name: file.name, name: file.webkitRelativePath || file.name,
type: file.type, type: file.type,
file, file,
el el
@ -398,7 +405,7 @@ export default {
}) })
}); });
return 1 return 1
} else if (entry.isDirectory) { } else if (entry.isDirectory && this.dropDirectory) {
var count = 0 var count = 0
entry.createReader().readEntries((entrys) => { entry.createReader().readEntries((entrys) => {
for (var i = 0; i < entrys.length; i++) { for (var i = 0; i < entrys.length; i++) {
@ -923,7 +930,7 @@ export default {
this.add(item.getAsFile()) this.add(item.getAsFile())
} }
if (!this.multiple) { if (!this.multiple) {
break; break
} }
} }
} else if (dataTransfer.files.length) { } else if (dataTransfer.files.length) {
@ -931,7 +938,7 @@ export default {
let file = dataTransfer.files[i] let file = dataTransfer.files[i]
this.add(file) this.add(file)
if (!this.multiple) { if (!this.multiple) {
break; break
} }
} }
} }

@ -5,6 +5,7 @@
:id="$parent.id || $parent.name" :id="$parent.id || $parent.name"
:accept="$parent.accept" :accept="$parent.accept"
@change="change" @change="change"
:webkitdirectory="$parent.directory && $parent.mode === 'html5'"
:multiple="$parent.multiple && $parent.mode === 'html5'" :multiple="$parent.multiple && $parent.mode === 'html5'"
/> />
</template> </template>

Loading…
Cancel
Save