Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 在云函数中解析表单数据zip文件_Javascript_Angular_Google Cloud Functions_Serverless_Ibm Cloud Functions - Fatal编程技术网

Javascript 在云函数中解析表单数据zip文件

Javascript 在云函数中解析表单数据zip文件,javascript,angular,google-cloud-functions,serverless,ibm-cloud-functions,Javascript,Angular,Google Cloud Functions,Serverless,Ibm Cloud Functions,我正在向一个云函数发送FormData(),该函数在JavaScript前端具有类似的功能 //Frontend Angular const formData = mew FormData(); formData.append('file1', zipFile1); formData.append('file2', zipFile2); formData.append('name', 'MyFiles'); this.http.post(urlAPI, formData) //angularJ

我正在向一个云函数发送
FormData()
,该函数在JavaScript前端具有类似的功能

//Frontend Angular
const formData = mew FormData();
formData.append('file1', zipFile1);
formData.append('file2', zipFile2);
formData.append('name', 'MyFiles');

this.http.post(urlAPI, formData) //angularJS


//Cloud Function
function main(param) {
   console.log(param);
}
参数
上的控制台日志显示
内容类型
多部分/表单数据
在标题中。 还有一个属性标记为
\uuuuuw\ubody
。此值是一个非常长的字符串和数字。我不确定这是什么,但我假设这是我以流/序列化格式发送的文件

{
  __ow_body: 'hf381fh891hv831h93n19384v938v892vn98vn2890vn29n9vn9892vn948vn2893vn2985hv98...'
}
我想确认这是否是流数据,如果是,我如何解析它

我需要将这个包含图像的zip文件发送到我正在使用的API。在此documents API中,示例显示在本地文件系统中发送文件,例如

someApiFunction('./myImgs.zip').then(...);
问题在于我通过http网络协议发送zip文件,我认为格式与在本地文件系统/机器中读取文件的示例非常不同。如何对文件进行反序列化/解析,以便将其识别为包含图像的zip文件

我尝试使用
fs.createReadStream
,但它似乎没有解析它。它只会生成一个更结构化的对象,但在该对象中,我看不到我的
formData
及其键,例如
file1
file2
name


我是否需要先在某个位置写入此文件?

即使可能性较小,您也可以尝试稍微改变发布formData的方式。我发现了一个关于如何使用的非常好的文档。正如上面所述,您可以尝试使用如下方式发布:

  this.httpClient.post<any>(this.SERVER_URL, formData).subscribe(
  (res) => console.log(res),
  (err) => console.log(err)
); 
this.httpClient.post,您可以预期一些库无法工作,我认为这正是您的情况

正如云函数中所述,您需要使用请求的rawBody属性和“总线男孩”库来处理多部分/表单数据


这里是处理此类请求的一种。

即使可能性较小,您也可以尝试改变一点您如何发布formData的方式。我发现了一个关于如何使用的非常好的文档。正如上面所述,您可以尝试使用如下方式发布:

  this.httpClient.post<any>(this.SERVER_URL, formData).subscribe(
  (res) => console.log(res),
  (err) => console.log(err)
); 
this.httpClient.post,您可以预期一些库无法工作,我认为这正是您的情况

正如云函数中所述,您需要使用请求的rawBody属性和“总线男孩”库来处理多部分/表单数据


下面是处理此类请求的一个方法。

formData
生成JSON时,它将成为一个空对象
{}
-在请求中组合formData和JSON似乎是一件奇怪的事情,所以如果我不将其设置为JSON,我如何发送它?当从
formData
设置JSON时,它将成为一个空对象
{}
-在请求中结合formData和JSON似乎是一件奇怪的事情,所以如果我没有将其设置为JSON,如何发送它?