以角度2上传文件

时间:2017-03-01 08:42:54

标签: csv angular

我正在尝试以角度2上传csv / xlxs文件,但每当我提交文件时,我都会收到无法上传的异常文件。请从我的后端再试一次,虽然它在邮递员上工作正常。我的代码可能有什么问题?

//service
    constructor (private authenticate:AuthenticationService) {
            this.filetrack = Observable.create(observer => {
                this.progressObserver = observer
            }).share();
        }

         SendRequest (url: string, params: string[], files: File[]) {
            return Observable.create(observer => {
                let formData: FormData = new FormData(),
                    xhr: XMLHttpRequest = new XMLHttpRequest();

                for (let i = 0; i < files.length; i++) {
                    formData.append("uploads[]", files[i], files[i].name);
                }

                xhr.onreadystatechange = () => {
                    if (xhr.readyState === 4) {
                        if (xhr.status === 200) {
                            observer.next(JSON.parse(xhr.response));
                            observer.complete();
                        } else {
                            observer.error(xhr.response);
                        }
                    }
                };

                xhr.upload.onprogress = (event) => {

                    this.progress = Math.round(event.loaded / event.total * 100);
                    this.progressObserver.next(this.progress);
                };


                xhr.open('POST', url, true);
                xhr.setRequestHeader('Authorization', 'Bearer ' + this.authenticate.user_token);
                xhr.send(formData);


            });
        }
    }

//component
export class FileUploadComponent {
    constructor(private service:FileUploadService) {
        this.service.filetrack.subscribe(
            data => {
                console.log('progress = '+data);
            });
    }

    onChange(event) {
        console.log('onChange');
         let files = event.target.files;
        console.log(files);
        this.service.SendRequest('http://localhost:8000/register/v1/file/country', [], files).subscribe(() => {
            console.log('sent');
        });
    }
}

1 个答案:

答案 0 :(得分:0)

您必须设置另一个标头才能上传文件:

xhr.setRequestHeader("Content-Type", "multipart/form-data");