【问题标题】:Cannot set Content-Type in Angular FileUpload control无法在 Angular FileUpload 控件中设置 Content-Type
【发布时间】:2019-02-06 11:59:36
【问题描述】:

我的 Angular 项目中有一个 PrimeNG FileUpload 控件,我手动调用上传方法,如 PrimeNG manually invoke FileUpload 所示。但是,虽然我已经用文件数据正确填充了 files 参数,但数据在从 service.ts 传递到 Controller (ASP.NET MVC) 后丢失了它的值并返回 null。我认为问题是由于无法在任何事件中设置 Content-Type 引起的,如下所示:

onBeforeSendFile(event: any) {
    event.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    event.xhr.setRequestHeader("Content-Type", "multipart/form-data");
}

or

onBeforeUploadFile(event: any) {
    event.xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    event.xhr.setRequestHeader("Content-Type", "multipart/form-data");
}

等等……

我在 setRequestHeader 行遇到“无法读取未定义的属性 'setRequestHeader'”错误。您能否告诉我如何设置必要的 RequestHeaders 而不会丢失文件数据?

更新: 下面是我的post方法:

 post(url: string, body: any, comp?: BaseComponent): Observable<any> {
    this.requestInterceptor(comp);
    return this.http.post<any>(url, { body: JSON.stringify(body) },
        {
            headers: new HttpHeaders({  // set the header values here
                'Content-Type': 'multipart/form-data',
                'X-Requested-With': 'XMLHttpRequest',
                'Test-Header': 'This is just a test header!'
            })
        }
    ).pipe(
        catchError((error, obs) => this.handleError(error, comp)),
        tap((res: Response) => {
            this.onSubscribeSuccess(res, comp);
        }, (error: any) => {
            this.onSubscribeError(error, comp);
        }),
        finalize(() => {
            this.onFinally(comp);
        }));
}

【问题讨论】:

    标签: asp.net-mvc angular primeng


    【解决方案1】:

    您可以使用HttpClient 代替:

    this._HttpClient.post('url whatever', { 'body': 'here' }, {
        headers: new HttpHeaders({  // set the header values here
            'Content-Type': 'multipart/form-data'
        })
    });
    

    【讨论】:

    • 非常感谢您的回复。虽然我可以传递一个自定义的 HttpHeaders(在 Chrome 开发者工具的网络中观察到),如上所示(称为“Test-Header”),但 Content-Type 参数值没有改变并被视为 Content-Type: application/ json。它与 JSON.stringify(body) 行有关吗?任何想法?我认为我们非常接近解决方案;)
    • 您是否有幸解决了这个问题?我遇到了同样的问题,好像我碰壁了:-/
    猜你喜欢
    • 2016-02-27
    • 2019-05-06
    • 2015-05-05
    • 2016-10-29
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2023-03-28
    • 2017-03-29
    相关资源
    最近更新 更多