我正在尋找拖放文件上傳組件,使用Knockout + .NET WebApi技術。拖放文件上傳(挖空+ webapi + asp.net)
我發現File Api項目,它不支持舊瀏覽器,但我可以忍受它。代碼在這裏:https://github.com/khayrov/khayrov.github.com/tree/master/jsfiddle/knockout-fileapi。
它創建自定義的淘汰賽綁定,有些部分代碼:
HTML:
<input type="file" accept="image/*" data-bind="file: imageFile, fileObjectURL: imageObjectURL, fileBinaryData: imageBinary"/>
淘汰賽JS:
ko.bindingHandlers.file = {
init: function(element, valueAccessor) {
$(element).change(function() {
var file = this.files[0];
if (ko.isObservable(valueAccessor())) {
valueAccessor()(file);
}
});
},
update: function(element, valueAccessor, allBindingsAccessor) {
var file = ko.utils.unwrapObservable(valueAccessor());
var bindings = allBindingsAccessor();
if (bindings.fileObjectURL && ko.isObservable(bindings.fileObjectURL)) {
var oldUrl = bindings.fileObjectURL();
if (oldUrl) {
windowURL.revokeObjectURL(oldUrl);
}
bindings.fileObjectURL(file && windowURL.createObjectURL(file));
}
if (bindings.fileBinaryData && ko.isObservable(bindings.fileBinaryData)) {
if (!file) {
bindings.fileBinaryData(null);
} else {
var reader = new FileReader();
reader.onload = function(e) {
bindings.fileBinaryData(e.target.result);
};
reader.readAsArrayBuffer(file);
}
}
}
Unfourtunately我不明白,如果我可以重複使用此代碼,集成它在一些拖放文件上傳組件中?
是否有任何現有的可用於knockout + webapi的DnD文件上傳組件?
我雖然在項目中使用的淘汰賽,我不使用自定義它具有約束力,但庫http://blueimp.github.io/jQuery-File-Upload/已被證明對我很好。 – Thewads