2016-07-19 5 views
0

Я пытаюсь выяснить, как читать содержимое файла text/xml, которое загружается на мой WebApp. На данный момент я не хочу/не хочу попадать на сервер, я просто хочу получить содержимое/текст файла.Угловая загрузка текстового файла, затем получение содержимого

Вот что я сделал до сих пор: xmlDiff.html:

<div id="xmlDiff-div" class="wrapper"> 
    <div class="configurationView "> 
     <div class="panelHeader">Upload XML Files</div> 
     <div class="treeWrapper panelBody"> 
      <button ngf-select="uploadLeftFile($file)" accept="xml/*" ngf-max-height="1000" ngf-max-size="2MB"> 
       Upload Left File</button> 
      <br><br> 
      <button ngf-select="uploadRightFile($file)" accept="xml/*" ngf-max-height="1000" ngf-max-size="2MB"> 
       Upload Right File</button> 
      <br><br> 
     </div> 
    </div> 
    <div id="diff_editors_div"> 
     <div class="panelheader sectionHeader">XML Diff Results</div> 
     <div id="compare"></div> 
    </div> 
</div> 

Теперь, вот мой контроллер:

app.controller('XmlDiffCtrl', ['$scope', '$q', '$location', '$timeout', function ($scope, $q, $location, $timeout) { 
    $('#compare').mergely({ 
     cmsettings: {readOnly: false, lineNumbers: true}, 
     ignorews: true, 
     width: 'auto', 
     height: 'auto', 
     lhs: function (setValue) { 
      setValue('paste left XML here'); 
     }, 
     rhs: function (setValue) { 
      setValue('paste right XML here'); 
     } 
    }); 
    $scope.uploadRightFile = function (file) { 
     console.log("Upload Right File has been called"); 
     console.log("file content :" + file); 
     $scope.rightFileText = file.data; **doesn't work, need an alternative** 

    }; 
    $scope.uploadLeftFile = function (file) { 

    }; 
}]); 

Так же, как примечание, я новичок Угловое разработчик, поэтому, если кто-то хочет, чтобы мои умственные способности уклонились прямо, но мне в первую очередь нужна помощь в выяснении того, как получить доступ к содержимому файла после его загрузки.

Сообщите мне, если я не был достаточно ясен, если вам нужно больше деталей.

+0

[FileReader] (https://developer.mozilla.org/en/docs/Web/API/FileReader) может быть? –

+0

Когда вы говорите, что хотите «получить» содержимое файла, вы имеете в виду, что хотите отобразить его на экране после его выбора? Как миниатюра, показывающая выбранный файл? –

+0

Да, я действительно хочу отобразить его в объединенном редакторе, но в основном то, что вы говорите, да. –

ответ

0

Попробуйте это:

function handleFiles(file) { 
    var reader = new FileReader(); 
    reader.onload = function(e) { 
    $scope.rightFileText = e.target.result; } 
    reader.readAsDataURL(file); 

} 
+0

Что такое e.target.result? –

+0

Пробовал, что вы сказали, и я получил очевидную ошибку, так как «e» не существует и: 'code' angular.js: 12416 Ошибка: не удалось выполнить 'readAsDataURL' в 'FileReader': объект уже занят чтением Blobs. xmlDiffController.js: 22 Uncaught ReferenceError: e не определен 'code' –

+0

Вы видели, я только что отредактировал его? или вы можете попытаться использовать «this.result» –

Смежные вопросы