Ето моята HTML форма:
<form name="myForm" ng-submit="">
<input ng-model='file' type="file"/>
<input type="submit" value='Submit'/>
</form>
Искам да кача изображение от локална машина и искам да прочета съдържанието на качения файл. Всичко това искам да направя с помощта на AngularJS.
Когато се опитам да отпечатам стойността на $scope.file
, тя излиза като неопределена.
В някои от отговорите тук се предлага използването на FormData()
, но за съжаление това е обект на браузъра, който не е наличен в Internet Explorer 9 и по-ниски версии. Ако трябва да поддържате тези по-стари браузъри, ще ви трябва резервна стратегия, като например използване на <iframe>
или Flash.
Вече има много Angular.js модули за извършване на качване на файлове. Тези два имат изрична поддръжка за по-стари браузъри:
И някои други опции:
Една от тях би трябвало да е подходяща за вашия проект или може да ви даде някаква представа за това как да го кодирате сами.
По-долу е представен работещ пример за качване на файлове:
В тази функция, наречена
setFiles
From View, която ще актуализира файловия масив в контролера
или
Можете да проверите jQuery File Upload с помощта на AngularJS
[
]() работи добре в Chrome и IE (ако актуализирате малко CSS във background-image). Това се използва за актуализиране на лентата на прогреса: scope.progress = Math.round(evt.loaded * 100 / evt.total)
но във FireFox angular's [percent] данните не се актуализират успешно в DOM, въпреки че файловете се качват успешно.