从 Angular 上的路径获取文件或如何以编程方式 Post 多部分文件请求

Get File from path on Angular or how to Programatically Post MultiPart File Request

因为我正在动态上传图片,所以我现在只想发送一张到我的 POST url。 从 PAW/Postman 开始,当我将文件作为多部分发送时,我的端点工作:

--__X_PAW_BOUNDARY__
Content-Disposition: form-data; name="file"; filename="blouse1.png" 
Content-Type: image/png

在 Angular 我试试这个:

const file = fs.readFileSync(imgPath, 'utf8');
const formData = new FormData();
formData.append("file", file);

// interceptor adds content type:  multipart/form-data
return this.http.post<any>(url, formData)
  .pipe(map((result) => result));

}

后台没有收到文件。

CURL 上的 Angular 请求包括:

 --data-binary $'------WebKitFormBoundarysAgZBIaWrsIKE5Z4\r\nContent-Disposition: form-data; name="file"\r\n\r\n[object Object]\r\n------WebKitFormBoundarysAgZBIaWrsIKE5Z4--\r\n' --compressed --insecure

而 PAW Curl 只是 :

     -H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
 -F "file="

我正在尝试通过阅读 fs.readFileSync 找到获取文件而不是内容的方法。这应该像 fs.getFile(path) 一样简单,以模仿使用文件上传表单时发生的情况。有什么想法吗?

此读取和文件创建工作正常,但听起来像是一种解决方法。

const fileContents = fs.readFileSync(imgPath);
const file = new File([fileContents], img);
const formData: any = new FormData();
formData.append("file", file);