Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “多种形式”零件类型在角度上不起作用_Javascript_Angular_Httpclient_Multipartform Data - Fatal编程技术网

Javascript “多种形式”零件类型在角度上不起作用

Javascript “多种形式”零件类型在角度上不起作用,javascript,angular,httpclient,multipartform-data,Javascript,Angular,Httpclient,Multipartform Data,设置: 使用角度6 http版本-“@angular/http”:“^6.1.9” 我试图使用多部分表单数据作为标题发布csv文件,但请求失败。浏览器似乎总是以“应用程序json”的形式发送内容类型我尝试了许多在internet上提供的方法来更改内容类型,但没有任何效果。我尝试过的一些方法是将内容类型设置为未定义,这会在http.js文件中引发错误,让浏览器检测到如此忽略设置内容类型也失败。请帮我做这个 groupBulkUpload(file) { const formData =

设置: 使用角度6

http版本-“@angular/http”:“^6.1.9”

我试图使用多部分表单数据作为标题发布csv文件,但请求失败。浏览器似乎总是以“应用程序json”的形式发送内容类型我尝试了许多在internet上提供的方法来更改内容类型,但没有任何效果。我尝试过的一些方法是将内容类型设置为未定义,这会在http.js文件中引发错误,让浏览器检测到如此忽略设置内容类型也失败。请帮我做这个

groupBulkUpload(file) {  
    const formData = new FormData();
    formData.append('file', file);
    // commented the below lines
    // formData.append('file', file, { type: 'text/csv' }));
    // let header = new HttpHeaders()
    // .set("Content-Type" , `multipart/form-data; boundary=${formData._boundary}`)
    // let options = { headers: header };

    let url = this.getAnyConfigUrl("rate");
    return this.http.post(url,formData)
  }

 //calling the api
 const blob = new Blob([csvData]);
    var f = new File([blob] , "filename.csv", {type: 'text/csv', lastModified: new Date().getDate()})
    this._config.groupBulkUpload(f).subscribe(val=>{
      console.log(val)
    })
更新:浏览器始终将其视为Json类型。所以它无法检测到 我猜是CSV格式。有什么想法吗

请求标头:

请求有效负载:

请检查您是否正在使用interceptor拦截http请求并添加
JSON
数据类型

append方法中缺少第三个参数(可选),但可以将文件名作为第三个参数传递。对于文件
formData.append
,可以将文件名作为第三个参数传递。如果我们省略了
blob
类型的第三个参数,那么默认文件名将是
blob

参数:

名称 值中包含其数据的字段的名称

字段的值。这可以是USVString或Blob(包括File之类的子类)。如果未指定任何值,则该值将转换为字符串

文件名可选 当Blob或文件作为第二个参数传递时,报告给服务器的文件名(USVString)。Blob对象的默认文件名为“Blob”。文件对象的默认文件名是文件的文件名

尝试此操作并从侦听器中删除此调用

groupBulkUpload(file) {
    const formData = new FormData();
    formData.append('file', file, "filename.csv");
    let url = this.getAnyConfigUrl("rate");
    return this.http.post(url, formData);
}
//calling the api
const blob = new Blob([csvData]);
var f = new File([blob], "filename.csv", { type: 'text/csv', lastModified: new Date().getDate() })
this._config.groupBulkUpload(f).subscribe(val => {
    console.log(val)
})

请求获取失败。由于浏览器检测到的内容是JSON而不是CSV/Multipart formdatacontent类型没有改变,它仍然像JSONA一样,你在使用拦截器吗?嘿,是的,让我在那里检查一下。你太棒了。谢谢你救了我的命。我只是重写了一遍,花了很多时间,但运气不好,但你觉得很容易。再次感谢。