Вот моя HTML-форма:
<form name="myForm" ng-submit="">
<input ng-model='file' type="file"/>
<input type="submit" value='Submit'/>
</form>
Я хочу загрузить изображение с локального компьютера и прочитать содержимое загруженного файла. Все это я хочу сделать с помощью AngularJS.
Когда я пытаюсь напечатать значение, $scope.file
оно становится неопределенным.
angularjs
angularjs-fileupload
Адитья Сетхи
источник
источник
Ответы:
Некоторые ответы здесь предлагают использовать
FormData()
, но, к сожалению, это объект браузера, недоступный в Internet Explorer 9 и ниже. Если вам нужно поддерживать эти старые браузеры, вам потребуется стратегия резервного копирования, например использование<iframe>
или Flash.Уже есть много модулей Angular.js для загрузки файлов. Эти два имеют явную поддержку для старых браузеров:
И некоторые другие варианты:
Один из них должен соответствовать вашему проекту или может дать вам некоторое представление о том, как его кодировать самостоятельно.
источник
Самый простой - использовать HTML5 API, а именно
FileReader
HTML довольно прост:
В вашем контроллере определите метод add:
Совместимость браузера
Настольные браузеры
Мобильные браузеры
Примечание: метод readAsBinaryString () устарел, и вместо него следует использовать readAsArrayBuffer () .
источник
onloadend
функции обратного вызова. Вам не нужна библиотека для использования этого API, она уже есть в вашем браузере (если вы не используете очень старый). Надеюсь это поможет.readAsArrayBuffer
метод FileReaderSync (который доступен только для веб-работников) вместо обычного асинхронного API FileReader ?Это современный браузерный способ, без сторонних библиотек. Работает на всех последних браузерах.
HTML:
PHP:
js fiddle (только внешний интерфейс) https://jsfiddle.net/vince123/8d18tsey/31/
источник
ng-submit
форма или действие? Само по себе это ничего не делаетНиже приведен рабочий пример загрузки файла:
http://jsfiddle.net/vishalvasani/4hqVu/
В этой функции под названием
Из View, который обновит массив файлов в контроллере
или
Вы можете проверить загрузку файлов jQuery с помощью AngularJS
http://blueimp.github.io/jQuery-File-Upload/angularjs.html
источник
Вы можете достичь хорошего файл и папку для загрузки с помощью flow.js .
https://github.com/flowjs/ng-flow
Проверьте демо здесь
http://flowjs.github.io/ng-flow/
Он не поддерживает IE7, IE8, IE9, поэтому в конечном итоге вам придется использовать уровень совместимости
https://github.com/flowjs/fusty-flow.js
источник
Используйте
onchange
событие, чтобы передать элемент входного файла в вашу функцию.<input type="file" onchange="angular.element(this).scope().fileSelected(this)" />
Поэтому, когда пользователь выбирает файл, у вас есть ссылка на него без необходимости нажимать кнопку «Добавить» или «Загрузить».
источник
Я перепробовал все варианты, которые дает @Anoyz (правильный ответ) ... и лучшее решение - https://github.com/danialfarid/angular-file-upload
Некоторые особенности:
Это нормально работает для меня. Вы просто должны обратить внимание на инструкции.
На стороне сервера я использую промежуточное ПО NodeJ, Express 4 и Multer для управления многочастным запросом.
источник
nlzt9LJWRrAZEO3ZteZUOgGc
без формата .png. Как добавить это?HTML
Сценарии
источник
<input type=file>
Элемент не по умолчанию работа с директивой нг-модели . Требуется специальная директива :Рабочая демонстрация
select-ng-files
директивы, которая работает сng-model
1$http.post
из списка файловПри отправке POST с объектом File важно установить
'Content-Type': undefined
. Затем метод отправки XHR обнаружит объект File и автоматически установит тип содержимого.источник
Легко с директивой
Html:
JS:
В директиве мы гарантируем, что создается новая область, а затем прослушиваем изменения, внесенные в элемент ввода файла. При обнаружении изменений с отправкой события во все области предков (вверх) с файловым объектом в качестве параметра.
В вашем контроллере:
Тогда в вашем AJAX вызове:
http://shazwazza.com/post/uploading-files-and-json-data-in-the-same-request-with-angular-js/
источник
я думаю, что это угловая загрузка файла:
нг-файлы для загрузки
Облегченная Angular JS директива для загрузки файлов.
Вот ДЕМО- страница. Особенности
https://github.com/danialfarid/ng-file-upload
источник
Ваш файл и JSON данные загружаются одновременно.
источник
Вы можете использовать
FormData
объект, который является безопасным и быстрым:источник
<input type="file" ng-change="contentChanged($event)">
, как это сделать?http://jsfiddle.net/vishalvasani/4hqVu/ отлично работает в chrome и IE (если немного обновить CSS в background-image). Это используется для обновления индикатора выполнения:
но в [процентах] данные FireFox angular не обновляются в DOM, хотя файлы загружаются успешно.
источник
load
событие и, если длина вычислима, запустить событие прогресса, чтобы указать успешную загрузку. github.com/danialfarid/angular-file-upload уже позаботится об этом.Вы можете рассмотреть IaaS для загрузки файла, такого как Uploadcare . Для этого есть пакет Angular: https://github.com/uploadcare/angular-uploadcare.
Технически это реализовано в виде директивы, предоставляющей различные варианты загрузки и манипуляции с загруженными изображениями внутри виджета:
Дополнительные параметры конфигурации для игры: https://uploadcare.com/widget/configure/
источник
Я знаю, что это поздняя запись, но я создал простую директиву загрузки. Что вы можете получить работу в кратчайшие сроки!
ng-simple-upload more on Github с примером использования Web API.
источник
HTML
добавьте метод 'profileimage ()' в ваш контроллер
источник
Это должно быть обновление / комментарий к ответу @ jquery-guru, но, так как мне не хватает представителя, он пойдет сюда. Это исправляет ошибки, которые теперь генерируются кодом.
https://jsfiddle.net/vzhrqotw/
Изменение в основном:
Для того, чтобы:
Не стесняйтесь переехать в более подходящее место, если это необходимо.
источник
Я прочитал всю ветку, и решение HTML5 API выглядело лучше всего. Но это изменяет мои двоичные файлы, повреждая их способом, который я не исследовал. Решение, которое отлично сработало для меня, было:
HTML:
JS:
Серверная часть (PHP):
источник
Я могу загружать файлы, используя AngularJS, используя следующий код:
file
Для аргумента , который должен быть передан для функцииngUploadFileUpload
является$scope.file
в соответствии с вашим вопросом.Ключевым моментом здесь является использование
transformRequest: []
. Это предотвратит перепутывание $ http с содержимым файла.источник
Над принятым ответом не поддерживается браузер. Если у кого-то есть проблемы с совместимостью, попробуйте это.
скрипка
Посмотреть код
Код контроллера
источник
простыми словами
в HTML - добавить только код ниже
в контроллере - эта функция вызывается при нажатии кнопки «Загрузить файл» . это загрузит файл. Вы можете утешить это.
добавить больше в контроллеры - ниже код добавить в функцию. Эта функция вызывается, когда вы нажимаете на кнопку, которая используется « нажатие на API (POST)» . он отправит файл (который загружен) и данные формы на сервер.
в этом случае .. я добавил ниже код в качестве данных формы
источник
В угловом контроллере
источник
Мы использовали HTML, CSS и AngularJS. В следующем примере показано, как загрузить файл с помощью AngularJS.
источник
Рабочий пример с использованием простой директивы ( ng-file-model ):
и использовать
FormData
для загрузки файла в вашей функции.все кредиты идут на https://github.com/mistralworks/ng-file-model
Я столкнулся с небольшой проблемой, вы можете проверить это здесь: https://github.com/mistralworks/ng-file-model/issues/7
Наконец, вот раздвоенный репо: https://github.com/okasha93/ng-file-model/blob/patch-1/ng-file-model.js
источник
Код поможет вставить файл
insert.js
save_data.php
источник
это работает
file.html
controller.js
fileupload.php
источник
ЗАГРУЗИТЬ ФАЙЛЫ
СКАЧАТЬ ФАЙЛЫ:
источник
источник