Angular2, TypeScript를 사용하여 JSON 데이터와 함께 서버로 파일을 보냅니다.
<input type="file" class="form-control" name="avatar" id="uploadyour" name="uploadyour" #uploadyour="ngModel" [(ngModel)]="model.uploadyour"
(change)="fileChange($event)" placeholder="Upload file" accept=".pdf,.doc,.docx" >
import { Http, Headers, Response, Request, RequestMethod, URLSearchParams, RequestOptions } from "@angular/http";
import * as FileSaver from "file-saver";
import {Observable} from 'rxjs/Rx';
import { Injectable } from '@angular/core';
fileChange(event) {
let fileList: FileList = event.target.files;
if(fileList.length > 0) {
let file: File = fileList[0];
let formData:FormData = new FormData();
console.log(file);
formData.append('uploadFile', file, file.name);
let headers = new Headers();
headers.append('enctype', 'multipart/form-data');
headers.append('Accept', 'application/json');
console.log(headers);
let options = new RequestOptions({ headers: headers });
console.log(formData);
this.http.post("http://localhost:1337/trackstatus/upload", formData, options)
.map(res => res.json())
.catch(error => Observable.throw(error))
.subscribe(
data => console.log('success'),
error => console.log(error)
)
}
}
controller.js
upload: function (req, res) {
req.file('avatar').upload(function (err, files) {
if (err)
return res.serverError(err);
return res.json({
message: files.length + ' file(s) uploaded successfully!',
files: files
});
});
},
아래 오류가 발생합니다.
XMLHttpRequest는 http : // localhost : 1337 / trackstatus / upload를 로드 할 수 없습니다 . 요청 헤더 필드 enctype은 프리 플라이트 응답에서 Access-Control-Allow-Headers에 의해 허용되지 않습니다.
Angular 코드가 실행중인 도메인에서 AJAX 요청을 허용하려면 서버의 설정을 업데이트해야합니다. Angular 앱이 이미 어딘가에 게시 된 경우 localhost 또는 다른 도메인 일 수 있습니다. CORS 설정을 변경하는 방법에 대한 세부 사항은 서버 측 스택에 따라 다르지만이 SO 답변은 일반적인 수정 사항을 보여줍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다