@dovid אמר בפתיחת אלמנט אינפוט פייל ע"י לחיצה על דיב שממוקם מעליו, אפשרי?:
מה הכונה צריך? מי צריך?
בשביל להעלות את הקובץ לשרת.
מהכתבה שהבאת הבנתי שאוביקט הfile מחזיק רק מידע על הקובץ, ובשביל לשלוח את הקובץ עצמו צריך לרנדר (=לקרוא) את אותו ואז אפשר לשלוח את תכולתו.
אז הנחתי שצורת הרנדור יכולה להשפיע על תכולת הקובץ, ואם אבחר בצורה הלא נכונה, השרת לא יצליח לקרוא את הקובץ.
הבנתי נכון?
כך כתבתי את הקוד:
<textarea drop-zone upload-data="vm.uploadData" ng-model="vm.uploadData.text"
.directive('dropZone', ['$http', function($http){
return {
scope: {
uploadData: '=',
},
link: function (scope, element, attrs) {
element.bind("drop", function (e) {
e.stopPropagation();
e.preventDefault();
let file = e.dataTransfer.files[0];
scope.uploadData.fileObj = file;
var reader = new FileReader();
//reader.onload = function( theFile ) {
reader.onloadend = function( theFile ) {
scope.uploadData.contentFile = reader.result;
}
reader.readAsBinaryString(file)
scope.$apply()
});
element.bind("dragover", function (e) {
e.stopPropagation();
e.preventDefault();
e.dataTransfer.dropEffect = 'copy';
});
}
}
}]);
האם הכתיבה והאנלוגיה נכונה?