fix dataTransfer `kind=string`

master
git 8 years ago
parent 9a4f07f8d2
commit f3867fb8ea

259
dist/example.js vendored

@ -1471,14 +1471,14 @@
value: true
});
var _toConsumableArray2 = __webpack_require__(69);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _stringify = __webpack_require__(64);
var _stringify2 = _interopRequireDefault(_stringify);
var _toConsumableArray2 = __webpack_require__(69);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _promise = __webpack_require__(66);
var _promise2 = _interopRequireDefault(_promise);
@ -1794,6 +1794,109 @@
return isArray ? addFiles : addFiles[0];
},
addInputFile: function addInputFile(el) {
var files = [];
if (el.files) {
for (var i = 0; i < el.files.length; i++) {
var file = el.files[i];
files.push({
size: file.size,
name: file.webkitRelativePath || file.relativePath || file.name,
type: file.type,
file: file,
el: el
});
}
} else {
files.push({
name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
el: el
});
}
return this.add(files);
},
addDataTransfer: function addDataTransfer(dataTransfer) {
var files = [];
if (dataTransfer.items && dataTransfer.items.length) {
var items = [];
for (var i = 0; i < dataTransfer.items.length; i++) {
var item = dataTransfer.items[i];
if (item.getAsEntry) {
item = item.getAsEntry();
} else if (item.webkitGetAsEntry) {
item = item.webkitGetAsEntry();
} else {
item = item.getAsFile();
}
if (item) {
items.push(item);
}
}
return new _promise2.default(function (resolve, reject) {
var _this = this;
var forEach = function forEach(i) {
var item = items[i];
if (!item || !_this.multiple && files.length) {
return resolve(_this.add(files));
}
_this.getEntry(item).then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
});
}
if (dataTransfer.files.length) {
for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {
files.push(dataTransfer.files[_i3]);
if (!this.multiple) {
break;
}
}
return _promise2.default.resolve(this.add(files));
}
return _promise2.default.resolve([]);
},
getEntry: function getEntry(entry) {
var _this2 = this;
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return new _promise2.default(function (resolve, reject) {
if (entry.isFile) {
entry.file(function (file) {
resolve([{
size: file.size,
name: path + file.name,
type: file.type,
file: file
}]);
});
} else if (entry.isDirectory && _this2.dropDirectory) {
entry.createReader().readEntries(function (entries) {
var files = [];
var forEach = function forEach(i) {
if (!entries[i] || files.length && !_this2.multiple) {
return resolve(files);
}
_this2.getEntry(entries[i], path + entry.name + '/').then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
});
} else {
resolve([]);
}
});
},
remove: function remove(file) {
file = this.get(file);
if (file) {
@ -1860,16 +1963,16 @@
this.uploading++;
this.$nextTick(function () {
var _this = this;
var _this3 = this;
setTimeout(function () {
_this.upload(newFile).then(function () {
newFile = _this.get(newFile);
_this3.upload(newFile).then(function () {
newFile = _this3.get(newFile);
if (newFile) {
_this.update(newFile, { active: false, success: !newFile.error });
_this3.update(newFile, { active: false, success: !newFile.error });
}
}).catch(function (e) {
_this.update(newFile, { active: false, success: false, error: e.code || e.error || e.message || e });
_this3.update(newFile, { active: false, success: false, error: e.code || e.error || e.message || e });
});
}, parseInt(Math.random() * 50 + 50));
});
@ -1957,13 +2060,13 @@
return this.uploadXhr(xhr, file, form);
},
uploadXhr: function uploadXhr(xhr, file, data) {
var _this2 = this;
var _this4 = this;
var speedTime = 0;
var speedLoaded = 0;
xhr.upload.onprogress = function (e) {
if (!e.lengthComputable || !(file = _this2.get(file)) || !file.active) {
if (!e.lengthComputable || !(file = _this4.get(file)) || !file.active) {
return;
}
@ -1973,7 +2076,7 @@
}
speedTime = speedTime2;
file = _this2.update(file, {
file = _this4.update(file, {
progress: (e.loaded / e.total * 100).toFixed(2),
speed: e.loaded - speedLoaded
});
@ -1981,7 +2084,7 @@
};
var interval = setInterval(function () {
file = _this2.get(file);
file = _this4.get(file);
if (file && !file.success && !file.error && file.active) {
return;
}
@ -2009,7 +2112,7 @@
interval = false;
}
file = _this2.get(file);
file = _this4.get(file);
if (!file) {
return reject('not_exists');
@ -2062,7 +2165,7 @@
}
}
file = _this2.update(file, data);
file = _this4.update(file, data);
if (file.error) {
return reject(file.error);
@ -2084,13 +2187,13 @@
xhr.setRequestHeader(key, file.headers[key]);
}
file = _this2.update(file, { xhr: xhr });
file = _this4.update(file, { xhr: xhr });
xhr.send(data);
});
},
uploadHtml4: function uploadHtml4(file) {
var _this3 = this;
var _this5 = this;
var onKeydown = function onKeydown(e) {
if (e.keyCode == 27) {
@ -2154,12 +2257,12 @@
return new _promise2.default(function (resolve, reject) {
setTimeout(function () {
if (!(file = _this3.update(file, { iframe: iframe }))) {
if (!(file = _this5.update(file, { iframe: iframe }))) {
return reject('not_exists');
}
var interval = setInterval(function () {
file = _this3.get(file);
file = _this5.get(file);
if (file && !file.success && !file.error && file.active) {
return;
}
@ -2187,7 +2290,7 @@
document.body.removeEventListener('keydown', onKeydown);
file = _this3.get(file);
file = _this5.get(file);
if (!file) {
return reject('not_exists');
@ -2239,7 +2342,7 @@
data.response = response;
}
file = _this3.update(file, data);
file = _this5.update(file, data);
if (file.error) {
return reject(file.error);
@ -2317,75 +2420,6 @@
this.dropElement.addEventListener('drop', this.onDrop, false);
}
},
addInputFile: function addInputFile(el) {
var files = [];
if (el.files) {
for (var i = 0; i < el.files.length; i++) {
var file = el.files[i];
files.push({
size: file.size,
name: file.webkitRelativePath || file.relativePath || file.name,
type: file.type,
file: file,
el: el
});
}
} else {
files.push({
name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
el: el
});
}
this.add(files);
var Component = this.$options.components.InputFile;
if (!Component._Ctor) {} else if (typeof Component._Ctor === 'function') {
Component = Component._Ctor;
} else {
Component = Component._Ctor[0];
}
var inputFile = new Component({
parent: this,
el: el
});
},
getEntry: function getEntry(entry) {
var _this4 = this;
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return new _promise2.default(function (resolve, reject) {
if (entry.isFile) {
entry.file(function (file) {
resolve([{
size: file.size,
name: path + file.name,
type: file.type,
file: file
}]);
});
} else if (entry.isDirectory && _this4.dropDirectory) {
entry.createReader().readEntries(function (entries) {
var files = [];
var forEach = function forEach(i) {
if (!entries[i] || files.length && !_this4.multiple) {
return resolve(files);
}
_this4.getEntry(entries[i], path + entry.name + '/').then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
});
} else {
resolve([]);
}
});
},
onDragenter: function onDragenter(e) {
e.preventDefault();
if (!this.dropActive) {
@ -2402,48 +2436,9 @@
e.preventDefault();
},
onDrop: function onDrop(e) {
var _this5 = this;
e.preventDefault();
this.dropActive = false;
var dataTransfer = e.dataTransfer;
var files = [];
if (dataTransfer.items && dataTransfer.items.length) {
var items = [];
for (var i = 0; i < dataTransfer.items.length; i++) {
var item = dataTransfer.items[i];
if (item.getAsEntry) {
item = item.getAsEntry();
} else if (item.webkitGetAsEntry) {
item = item.webkitGetAsEntry();
} else {
item = item.getAsFile();
}
items.push(item);
}
var forEach = function forEach(i) {
var item = items[i];
if (!item || !_this5.multiple && files.length) {
return _this5.add(files);
}
_this5.getEntry(item).then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
} else if (dataTransfer.files.length) {
for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {
files.push(dataTransfer.files[_i3]);
if (!this.multiple) {
break;
}
}
this.add(files);
}
this.addDataTransfer(e.dataTransfer);
}
}
};
@ -2462,6 +2457,10 @@
change: function change(e) {
this.$destroy();
this.$parent.addInputFile(e.target);
new this.constructor({
parent: this.$parent,
el: this.$el
});
}
}
};

File diff suppressed because one or more lines are too long

@ -961,14 +961,14 @@ return /******/ (function(modules) { // webpackBootstrap
value: true
});
var _toConsumableArray2 = __webpack_require__(62);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _stringify = __webpack_require__(56);
var _stringify2 = _interopRequireDefault(_stringify);
var _toConsumableArray2 = __webpack_require__(62);
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _promise = __webpack_require__(58);
var _promise2 = _interopRequireDefault(_promise);
@ -1284,6 +1284,109 @@ return /******/ (function(modules) { // webpackBootstrap
return isArray ? addFiles : addFiles[0];
},
addInputFile: function addInputFile(el) {
var files = [];
if (el.files) {
for (var i = 0; i < el.files.length; i++) {
var file = el.files[i];
files.push({
size: file.size,
name: file.webkitRelativePath || file.relativePath || file.name,
type: file.type,
file: file,
el: el
});
}
} else {
files.push({
name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
el: el
});
}
return this.add(files);
},
addDataTransfer: function addDataTransfer(dataTransfer) {
var files = [];
if (dataTransfer.items && dataTransfer.items.length) {
var items = [];
for (var i = 0; i < dataTransfer.items.length; i++) {
var item = dataTransfer.items[i];
if (item.getAsEntry) {
item = item.getAsEntry();
} else if (item.webkitGetAsEntry) {
item = item.webkitGetAsEntry();
} else {
item = item.getAsFile();
}
if (item) {
items.push(item);
}
}
return new _promise2.default(function (resolve, reject) {
var _this = this;
var forEach = function forEach(i) {
var item = items[i];
if (!item || !_this.multiple && files.length) {
return resolve(_this.add(files));
}
_this.getEntry(item).then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
});
}
if (dataTransfer.files.length) {
for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {
files.push(dataTransfer.files[_i3]);
if (!this.multiple) {
break;
}
}
return _promise2.default.resolve(this.add(files));
}
return _promise2.default.resolve([]);
},
getEntry: function getEntry(entry) {
var _this2 = this;
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return new _promise2.default(function (resolve, reject) {
if (entry.isFile) {
entry.file(function (file) {
resolve([{
size: file.size,
name: path + file.name,
type: file.type,
file: file
}]);
});
} else if (entry.isDirectory && _this2.dropDirectory) {
entry.createReader().readEntries(function (entries) {
var files = [];
var forEach = function forEach(i) {
if (!entries[i] || files.length && !_this2.multiple) {
return resolve(files);
}
_this2.getEntry(entries[i], path + entry.name + '/').then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
});
} else {
resolve([]);
}
});
},
remove: function remove(file) {
file = this.get(file);
if (file) {
@ -1350,16 +1453,16 @@ return /******/ (function(modules) { // webpackBootstrap
this.uploading++;
this.$nextTick(function () {
var _this = this;
var _this3 = this;
setTimeout(function () {
_this.upload(newFile).then(function () {
newFile = _this.get(newFile);
_this3.upload(newFile).then(function () {
newFile = _this3.get(newFile);
if (newFile) {
_this.update(newFile, { active: false, success: !newFile.error });
_this3.update(newFile, { active: false, success: !newFile.error });
}
}).catch(function (e) {
_this.update(newFile, { active: false, success: false, error: e.code || e.error || e.message || e });
_this3.update(newFile, { active: false, success: false, error: e.code || e.error || e.message || e });
});
}, parseInt(Math.random() * 50 + 50));
});
@ -1447,13 +1550,13 @@ return /******/ (function(modules) { // webpackBootstrap
return this.uploadXhr(xhr, file, form);
},
uploadXhr: function uploadXhr(xhr, file, data) {
var _this2 = this;
var _this4 = this;
var speedTime = 0;
var speedLoaded = 0;
xhr.upload.onprogress = function (e) {
if (!e.lengthComputable || !(file = _this2.get(file)) || !file.active) {
if (!e.lengthComputable || !(file = _this4.get(file)) || !file.active) {
return;
}
@ -1463,7 +1566,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
speedTime = speedTime2;
file = _this2.update(file, {
file = _this4.update(file, {
progress: (e.loaded / e.total * 100).toFixed(2),
speed: e.loaded - speedLoaded
});
@ -1471,7 +1574,7 @@ return /******/ (function(modules) { // webpackBootstrap
};
var interval = setInterval(function () {
file = _this2.get(file);
file = _this4.get(file);
if (file && !file.success && !file.error && file.active) {
return;
}
@ -1499,7 +1602,7 @@ return /******/ (function(modules) { // webpackBootstrap
interval = false;
}
file = _this2.get(file);
file = _this4.get(file);
if (!file) {
return reject('not_exists');
@ -1552,7 +1655,7 @@ return /******/ (function(modules) { // webpackBootstrap
}
}
file = _this2.update(file, data);
file = _this4.update(file, data);
if (file.error) {
return reject(file.error);
@ -1574,13 +1677,13 @@ return /******/ (function(modules) { // webpackBootstrap
xhr.setRequestHeader(key, file.headers[key]);
}
file = _this2.update(file, { xhr: xhr });
file = _this4.update(file, { xhr: xhr });
xhr.send(data);
});
},
uploadHtml4: function uploadHtml4(file) {
var _this3 = this;
var _this5 = this;
var onKeydown = function onKeydown(e) {
if (e.keyCode == 27) {
@ -1644,12 +1747,12 @@ return /******/ (function(modules) { // webpackBootstrap
return new _promise2.default(function (resolve, reject) {
setTimeout(function () {
if (!(file = _this3.update(file, { iframe: iframe }))) {
if (!(file = _this5.update(file, { iframe: iframe }))) {
return reject('not_exists');
}
var interval = setInterval(function () {
file = _this3.get(file);
file = _this5.get(file);
if (file && !file.success && !file.error && file.active) {
return;
}
@ -1677,7 +1780,7 @@ return /******/ (function(modules) { // webpackBootstrap
document.body.removeEventListener('keydown', onKeydown);
file = _this3.get(file);
file = _this5.get(file);
if (!file) {
return reject('not_exists');
@ -1729,7 +1832,7 @@ return /******/ (function(modules) { // webpackBootstrap
data.response = response;
}
file = _this3.update(file, data);
file = _this5.update(file, data);
if (file.error) {
return reject(file.error);
@ -1807,75 +1910,6 @@ return /******/ (function(modules) { // webpackBootstrap
this.dropElement.addEventListener('drop', this.onDrop, false);
}
},
addInputFile: function addInputFile(el) {
var files = [];
if (el.files) {
for (var i = 0; i < el.files.length; i++) {
var file = el.files[i];
files.push({
size: file.size,
name: file.webkitRelativePath || file.relativePath || file.name,
type: file.type,
file: file,
el: el
});
}
} else {
files.push({
name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
el: el
});
}
this.add(files);
var Component = this.$options.components.InputFile;
if (!Component._Ctor) {} else if (typeof Component._Ctor === 'function') {
Component = Component._Ctor;
} else {
Component = Component._Ctor[0];
}
var inputFile = new Component({
parent: this,
el: el
});
},
getEntry: function getEntry(entry) {
var _this4 = this;
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return new _promise2.default(function (resolve, reject) {
if (entry.isFile) {
entry.file(function (file) {
resolve([{
size: file.size,
name: path + file.name,
type: file.type,
file: file
}]);
});
} else if (entry.isDirectory && _this4.dropDirectory) {
entry.createReader().readEntries(function (entries) {
var files = [];
var forEach = function forEach(i) {
if (!entries[i] || files.length && !_this4.multiple) {
return resolve(files);
}
_this4.getEntry(entries[i], path + entry.name + '/').then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
});
} else {
resolve([]);
}
});
},
onDragenter: function onDragenter(e) {
e.preventDefault();
if (!this.dropActive) {
@ -1892,48 +1926,9 @@ return /******/ (function(modules) { // webpackBootstrap
e.preventDefault();
},
onDrop: function onDrop(e) {
var _this5 = this;
e.preventDefault();
this.dropActive = false;
var dataTransfer = e.dataTransfer;
var files = [];
if (dataTransfer.items && dataTransfer.items.length) {
var items = [];
for (var i = 0; i < dataTransfer.items.length; i++) {
var item = dataTransfer.items[i];
if (item.getAsEntry) {
item = item.getAsEntry();
} else if (item.webkitGetAsEntry) {
item = item.webkitGetAsEntry();
} else {
item = item.getAsFile();
}
items.push(item);
}
var forEach = function forEach(i) {
var item = items[i];
if (!item || !_this5.multiple && files.length) {
return _this5.add(files);
}
_this5.getEntry(item).then(function (results) {
files.push.apply(files, (0, _toConsumableArray3.default)(results));
forEach(i + 1);
});
};
forEach(0);
} else if (dataTransfer.files.length) {
for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {
files.push(dataTransfer.files[_i3]);
if (!this.multiple) {
break;
}
}
this.add(files);
}
this.addDataTransfer(e.dataTransfer);
}
}
};
@ -1952,6 +1947,10 @@ return /******/ (function(modules) { // webpackBootstrap
change: function change(e) {
this.$destroy();
this.$parent.addInputFile(e.target);
new this.constructor({
parent: this.$parent,
el: this.$el
});
}
}
};

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

@ -687,6 +687,28 @@ const nodeExternals = require('webpack-node-externals');
}
```
### addInputFile
* **参数:**
* `files: HTMLInputElement` 文件元素
* **返回值:** `Array` 返回已添加的文件列表
* **描述:**
把`<input type="file">`选择的文件添加进上传列表
要求版本 >= `2.5.1`
### addDataTransfer
* **参数:**
* `dataTransfer: DataTransfer` 拖拽或者粘贴的数据
* **返回值:** `Promise<Array>` 返回已添加的文件列表
* **描述:**
把拖拽或者粘贴的数据的文件添加进上传列表
要求版本 >= `2.5.1`
### update

@ -1,7 +1,7 @@
{
"name": "vue-upload-component",
"description": "Vue.js file upload component, Multi-file upload, Upload directory, Drag upload, Drag the directory, Upload multiple files at the same time, html4 (IE 9), `PUT` method, Customize the filter",
"version": "2.5.0-beta.4",
"version": "2.5.1-beta.1",
"author": "LianYue",
"scripts": {
"dev": "webpack-dev-server --inline --hot",

@ -413,6 +413,116 @@ export default {
return isArray ? addFiles : addFiles[0]
},
//
addInputFile(el) {
let files = []
if (el.files) {
for (let i = 0; i < el.files.length; i++) {
let file = el.files[i]
files.push({
size: file.size,
name: file.webkitRelativePath || file.relativePath || file.name,
type: file.type,
file,
el
})
}
} else {
files.push({
name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
el,
})
}
return this.add(files)
},
// DataTransfer
addDataTransfer(dataTransfer) {
let files = []
if (dataTransfer.items && dataTransfer.items.length) {
let items = []
for (let i = 0; i < dataTransfer.items.length; i++) {
let item = dataTransfer.items[i]
if (item.getAsEntry) {
item = item.getAsEntry()
} else if (item.webkitGetAsEntry) {
item = item.webkitGetAsEntry()
} else {
item = item.getAsFile()
}
if (item) {
items.push(item)
}
}
return new Promise(function(resolve, reject) {
let forEach = (i) => {
let item = items[i]
//
if (!item || (!this.multiple && files.length)) {
return resolve(this.add(files))
}
this.getEntry(item).then(function(results) {
files.push(...results)
forEach(i + 1)
})
}
forEach(0)
});
}
if (dataTransfer.files.length) {
for (let i = 0; i < dataTransfer.files.length; i++) {
files.push(dataTransfer.files[i])
if (!this.multiple) {
break
}
}
return Promise.resolve(this.add(files))
}
return Promise.resolve([])
},
// entry
getEntry(entry, path = '') {
return new Promise((resolve, reject) => {
if (entry.isFile) {
entry.file(function(file) {
resolve([
{
size: file.size,
name: path + file.name,
type: file.type,
file,
}
])
})
} else if (entry.isDirectory && this.dropDirectory) {
entry.createReader().readEntries((entries) => {
let files = []
let forEach = (i) => {
if (!entries[i] || (files.length && !this.multiple)) {
return resolve(files)
}
this.getEntry(entries[i], path + entry.name + '/').then((results) => {
files.push(...results)
forEach(i + 1)
})
}
forEach(0)
})
} else {
resolve([])
}
})
},
//
remove(file) {
file = this.get(file)
@ -1015,84 +1125,6 @@ export default {
},
//
addInputFile(el) {
let files = []
if (el.files) {
for (let i = 0; i < el.files.length; i++) {
let file = el.files[i]
files.push({
size: file.size,
name: file.webkitRelativePath || file.relativePath || file.name,
type: file.type,
file,
el
})
}
} else {
files.push({
name: el.value.replace(/^.*?([^\/\\\r\n]+)$/, '$1'),
el,
})
}
this.add(files)
var Component = this.$options.components.InputFile
// vue 2.0.0 = Component
// vue 2.0.x = Component._Ctor
// vue 2.1.x = Component._Ctor[0]
if (!Component._Ctor) {
} else if (typeof Component._Ctor === 'function') { ///... typeof
Component = Component._Ctor
} else {
Component = Component._Ctor[0]
}
var inputFile = new Component({
parent: this,
el,
})
},
// entry
getEntry(entry, path = '') {
return new Promise((resolve, reject) => {
if (entry.isFile) {
entry.file(function(file) {
resolve([
{
size: file.size,
name: path + file.name,
type: file.type,
file,
}
])
})
} else if (entry.isDirectory && this.dropDirectory) {
entry.createReader().readEntries((entries) => {
let files = []
let forEach = (i) => {
if (!entries[i] || (files.length && !this.multiple)) {
return resolve(files)
}
this.getEntry(entries[i], path + entry.name + '/').then((results) => {
files.push(...results)
forEach(i + 1)
})
}
forEach(0)
})
} else {
resolve([])
}
})
},
onDragenter(e) {
e.preventDefault()
if (!this.dropActive) {
@ -1114,44 +1146,7 @@ export default {
onDrop(e) {
e.preventDefault()
this.dropActive = false
let dataTransfer = e.dataTransfer
let files = []
if (dataTransfer.items && dataTransfer.items.length) {
let items = []
for (let i = 0; i < dataTransfer.items.length; i++) {
let item = dataTransfer.items[i]
if (item.getAsEntry) {
item = item.getAsEntry()
} else if (item.webkitGetAsEntry) {
item = item.webkitGetAsEntry()
} else {
item = item.getAsFile()
}
items.push(item)
}
let forEach = (i) => {
let item = items[i]
//
if (!item || (!this.multiple && files.length)) {
return this.add(files)
}
this.getEntry(item).then(function(results) {
files.push(...results)
forEach(i + 1)
})
}
forEach(0)
} else if (dataTransfer.files.length) {
for (let i = 0; i < dataTransfer.files.length; i++) {
files.push(dataTransfer.files[i])
if (!this.multiple) {
break
}
}
this.add(files)
}
this.addDataTransfer(e.dataTransfer)
},
}
}

@ -17,6 +17,10 @@ export default {
change(e) {
this.$destroy()
this.$parent.addInputFile(e.target)
new this.constructor({
parent: this.$parent,
el: this.$el,
})
}
}
}

Loading…
Cancel
Save