如何在Angular2中将数据发布到服务器?

时间:2016-08-27 06:54:11

标签: angular typescript

onChange(event) {
    var image = event.srcElement.files;
    console.log(image);

我的控制台值是

FileList {0: File, length: 1}

我应该将哪些内容作为发布数据发送到服务器?

2 个答案:

答案 0 :(得分:1)

我认为event.srcElement实际上是<input type="file">,因为您正在访问files属性available only of file input fields

Angular2 Http服务仅适用于现在的字符串主体。还有一个开放的问题也支持FormData,这将简化很多事情。

参见feat(http): Support many types of body on Request/Response and all ConnectionBackend implementations

现在,您可以使用XMLHttpRequest包裹的原始NgZone对象将POST数据作为FormData发送。

然而,可能更简单的解决方案是将文件作为base64编码的字符串发送:

onChange(event) {
    var image = event.srcElement.files[0];
    var reader = new FileReader();
    reader.onload = (evt) => {
        // Print base64 encoded file content
        console.log(evt.target.result);
        // Send data to server
        this.http.post(url, evt.target.result)...
    }
    reader.readAsDataURL(image);
}

有关详细信息,请参阅:

答案 1 :(得分:0)

类似的东西:

return this.http
      .post(this.heroesUrl, JSON.stringify({name: name}), {headers: this.headers})
      .toPromise()
      .then(res => res.json().data)
      .catch(this.handleError);

非常完美,您在https://angular.io/docs/ts/latest/tutorial/toh-pt6.html

拥有所需的一切