हे एम एमकेसी 3 का उपयोग नॉकआउट के साथ और डेटाबेस में अपलोड की गई छवि को अपलोड और सहेजने के लिए नॉकआउट बाध्यकारी का उपयोग करने की कोशिश कर रहा है। मैं छवि को ब्राउज़ करने और प्राप्त करने में सक्षम हूं लेकिन उस छवि को सहेजने के तरीके के रूप में नहीं मिल रहा हूं। मेरी HTML दृश्य है:छवि अपलोड करने और knockout जेएस का उपयोग कर डेटाबेस में इसे कैसे सहेजने के लिए?
<div data-bind="foreach: { data: images, beforeRemove: beforeRemoveSlot }">
<div>
<input type="file" accept="image/*" data-bind="file: imageFile, fileObjectURL: imageObjectURL, fileBinaryData: imageBinary"/>
<div data-bind="if: imageObjectURL">
<img class="thumb" data-bind="attr: { src: imageObjectURL }"/>
</div>
<div>Size: <span data-bind="text: fileSize"></span> bytes</div>
</div>
</div>
<input type="submit" value="Upload Picture" data-bind="click: upload" />
मेरे विचार मॉडल है:
var windowURL = window.URL || window.webkitURL;
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);
}
}
}
};
var imageUploadModel = function() {
var self = {};
var slotModel = function() {
var that = {};
that.imageFile = ko.observable();
that.imageObjectURL = ko.observable();
that.imageBinary = ko.observable();
that.fileSize = ko.computed(function() {
var file = this.imageFile();
return file ? file.size : 0;
}, that);
that.firstBytes = ko.computed(function() {
if (that.imageBinary()) {
var buf = new Uint8Array(that.imageBinary());
var bytes = [];
for (var i = 0; i < Math.min(10, buf.length); ++i) {
bytes.push(buf[i]);
}
return '[' + bytes.join(', ') + ']';
} else {
return '';
}
}, that);
return that;
};
self.beforeRemoveSlot = function (element, index, data) {
if (data.imageObjectURL()) {
windowURL.revokeObjectURL(data.imageObjectURL());
}
$(element).remove();
};
self.images = ko.observableArray([slotModel()]);
self.addSlot = function() {
self.images.push(slotModel());
};
self.removeSlot = function (data) {
self.images.remove(data);
};
return self;
}();
imageUploadModel.upload = function() {
}
$(document).ready(function() {
ko.applyBindings(imageUploadModel);
});
किसी को भी मुझे सुझाव दे सकते हैं मैं कैसे अपलोड बटन पर छवि को बचा सकता है पर क्लिक करें ????? >
<input type="file" data-bind="value: fileName, fileUpload: fileName, url: url">
<script src="{{ STATIC_URL }}html5knockoutImagePreview.js"></script>
js - -
अस्वीकरण -> यह कोड 9 या उससे कम में काम नहीं करता है क्योंकि वे एचटीएमएल 5 फाइल एपीआई का समर्थन नहीं करते हैं (मुझे लगा कि आप जानते थे कि यह वह तरीका था जिसका आप उपयोग कर रहे थे लेकिन किसी और के लिए यह पढ़ रहा था ...) – Fred
हे फ्रेड, thnkx आपके उत्तर के लिए, लेकिन यह अभी भी छवि ब्राउज़ कर रहा है, मैं अभी भी उस फ़ोल्डर में उस ब्राउज़ की गई छवि को सहेजने में असमर्थ हूं। – Parasignals
मैं इस बाध्यकारी का उपयोग कर रहा हूं, और मैंने यूआरएल सेट किया है: "एक्शन/कंट्रोलर", लेकिन मुझे एक्शन विधि के लिए सेट पैरामीटर की क्या ज़रूरत है? HttpPostedFileBase पैरामीटर हमेशा शून्य के रूप में आ रहा है। – jmogera