Я знаю, что это очень общий вопрос, но мне не удается загрузить файл в Angular 2. Я пытался
1) http://valor-software.com/ng2-file-upload/ и
2) http://ng2-uploader.com/home
... но не удалось. Кто-нибудь загрузил файл на Angular? Какой метод вы использовали? Как это сделать? Если будет предоставлен какой-либо пример кода или демонстрационная ссылка, он будет очень признателен.
angular
file-upload
angular2-http
heman123
источник
источник
headers.append('enctype', 'multipart/form-data');
строкой (вместо «Content-Type» использовался «enctype»). Возможно, это зависит от кода на стороне сервера. (то есть API)Из ответов выше я строю это с Angular 5.x
Просто позвоните,
uploadFile(url, file).subscribe()
чтобы начать загрузкуИспользуйте это в своем компоненте
источник
let params = new HttpParams(); let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'), }); const options = { headers: headers, params: params, reportProgress: true, };
Observable
иHttpEvent
может быть полностью опущен, если вы согласны с использованием вывода типа для предоставления возвращаемого типа функции дляuploadFile()
!this.http.request()
уже возвращает типObservable<HttpEvent<{}>>
, так что если вы передадите в запрос вызов универсальный тип (т. е.this.http.request<any>()
тогда вся функция будет работать только с правильными типами.input type="file" (change)="addFiles($event)" style="display: none" #file multiple> <button mat-raised-button color="primary" (click)="selectFile($event)">Upload File </button>
Спасибо @Eswar. Этот код работал отлично для меня. Я хочу добавить некоторые вещи к решению:
Я получаю ошибку:
java.io.IOException: RESTEASY007550: Unable to get boundary for multipart
Чтобы устранить эту ошибку, вы должны удалить «Content-Type» «multipart / form-data». Это решило мою проблему.
источник
multipart/form-data; boundary=---------------------------186035562730765173675680113
. Также см. Stackoverflow.com/a/29697774/1475331 и github.com/angular/angular/issues/11819 .java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found"
которая похожа на вашу, но когда я удаляюContent-Type
заголовок, я получаю 404 от бэкэнда. Мы используем Spring и Angular 2. Любая помощь приветствуется.Поскольку пример кода немного устарел, я решил поделиться более свежим подходом, использующим Angular 4.3 и новый (er) HttpClient API, @ angular / common / http
источник
В Angular 2+ очень важно оставить тип содержимого пустым. Если вы установите «Content-Type» на «multipart / form-data», загрузка не будет работать!
upload.component.html
upload.component.ts
источник
Я использовал следующий инструмент от заправки с успехом. У меня нет скина в игре с PrimeNg, я просто передаю свое предложение.
http://www.primefaces.org/primeng/#/fileupload
источник
Это простое решение сработало для меня: file-upload.component.html
Затем выполните загрузку в компоненте напрямую с помощью XMLHttpRequest .
Если вы используете ядро dotnet, имя параметра должно совпадать с именем поля from. файлы в этом случае:
Этот ответ - сплетник http://blog.teamtreehouse.com/uploading-files-ajax
Редактировать : после загрузки вы должны очистить загрузку файла, чтобы пользователь мог выбрать новый файл. И вместо использования XMLHttpRequest, возможно, лучше использовать fetch:
https://github.com/yonexbat/cran/blob/master/cranangularclient/src/app/file-upload/file-upload.component.ts
источник
Это полезное руководство , как загрузить файл, используя ng2-file-upload и БЕЗ ng2-file-upload.
Для меня это очень помогает.
На данный момент учебник содержит пару ошибок:
1- Клиент должен иметь тот же URL-адрес для загрузки, что и сервер, поэтому в
app.component.ts
строке измененияconst URL = 'http://localhost:8000/api/upload';
в
const URL = 'http://localhost:3000';
2- Сервер отправляет ответ в виде «text / html», поэтому в
app.component.ts
изменениив
источник
Загрузить изображение с полями формы
В моем случае мне понадобился .NET Web Api на C #
источник
Сегодня я интегрировал пакет ng2-file-upload в мое приложение angular 6, это было довольно просто, пожалуйста, найдите приведенный ниже код высокого уровня.
импортировать NG2-файлов загрузки модуля
app.module.ts
Компонент ts для импорта файлов FileUploader
app.component.ts
Компонент HTML добавить тег файла
app.component.html
Работает в режиме онлайн, ссылка на стек: https://ng2-file-upload-example.stackblitz.io
Пример кода Stackblitz: https://stackblitz.com/edit/ng2-file-upload-example
Официальная ссылка на документацию https://valor-software.com/ng2-file-upload/
источник
Попробуйте не устанавливать
options
параметрthis.http.post(${this.apiEndPoint}, formData)
и убедитесь, что вы не устанавливаете на
globalHeaders
своем заводе Http.источник
В простейшем виде следующий код работает в Angular 6/7
Вот полная реализация
источник
jspdf и Angular 8
Я генерирую PDF и хочу загрузить PDF с запросом POST, вот как я это делаю (для ясности я удаляю часть кода и сервисный слой)
источник
Я загрузил файл, используя ссылку. Пакет для загрузки файла не требуется.
// код для записи в файл .ts
}
// код для записи в файл service.ts
}
// код для записи в html
источник