我已经创建了以下服务,用于将文件上传到Angular2中的服务器:
import { Component } from '@angular/core';
import { Http, Response, Headers, RequestOptionsArgs } from '@angular/http'
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';
@Injectable()
export class UploadService {
constructor(private http: Http) {
}
public upload(url: string, file: File, type: string): Observable<Response>{
let formData: FormData = new FormData()
formData.append("uploadFile", file);
let headers = new Headers();
headers.append('Content-Type', type);
let opts:RequestOptionsArgs = { headers: headers };
return this.http.put(url, formData, opts)
}
}
它适用于大多数数据类型,除了我有一个奇怪的问题,对于图像,它将以下标题添加到文件的顶部:
------ WebKitFormBoundaryUmPd3GQyQ1XQfCFv 内容处理:表格数据;名称=&#34; uploadFile&#34 ;;文件名=&#34; Picture_Lotus-01.JPG&#34; 内容类型:image / jpeg
除此之外,所有数据都已正确上传;即如果我然后下载文件并删除这些标题行,图像是可读的。我已经使用Postman对上传进行了测试,并且工作正常,因此我认为这是我在angular2上传中配置标题信息的方式。 救命!!我现在一直在反对这一整天!
答案 0 :(得分:0)
这是multipart / form-data的标准,我需要一个足够的解析器服务器端。