无法 POST 文件到 /upload

Unable to POST file to /upload

我正在尝试上传文件。我已经把它放到服务器上了,我可以看到它。我用于 post 的代码是

postTheFileToStrapi2(file: File) {
    const formData: FormData = new FormData();
    console.log(file[0].name);
    formData.append('file', file[0]);
    this.http.post('http://localhost:1337/upload', formData)
      .subscribe((response) => console.log(response));
  }

问题是,我得到一个错误:

{
"statusCode":400,
"error":"Bad Request",
"message":[
   {"messages":[
      {"id":"Upload.status.empty","message":"Files are empty"}
   ]}]}

但是,查看 Chrome 中的 headers,我发送这个:

不胜感激。

您可以按照下面的例子上传Angular中的图片。

在你的 HTML 文件中的 .HMTL 文件中这样做

  <input class="hidden" type="file" (change)="readURL($event);" name="Uploadfile" 
   id="file" style="width: 100%;cursor: pointer;" #fileInput>

在 component.ts 文件

中像下面这样声明 fileInput 变量
 @ViewChild('fileInput', { static: false }) fileInput: ElementRef;

你可以在component.ts

中这样尝试
     uploadPhoto() {

       let userid = "43345;
      var nativeElement: HTMLInputElement = this.fileInput.nativeElement;
      var file = nativeElement.files[0];
      nativeElement.value = '';
      this.sampleService.ImageUpload(userid, file)
        .subscribe(photo => {
           
         ,
          err => {
           
            
          });
  }

在服务文件中做如下操作

    ImageUpload(id, file) {
    var formData = new FormData();
    formData.append('file', file);
    return this.Http.post(this.url+ 'ImageUpload' + '/' + id, formData);
  }

在网络中 API 像下面的代码一样从 Angular

接收文件
[HttpPost("ImageUpload/{Id}")]
public async Task<IActionResult> plantFileUpload(string Id, [FromForm(Name = "file")] IFormFile file)
{

}

这应该有效

尝试替换

formData.append('file', file[0]);

formData.append('files', file[0]);

--> 复数而不是单数。据我了解 strapi api (或上传插件?)期望数据位于名为 "files".

的字段中

我挣扎了好几个小时,直到读到 Pavlo Razumovskyi 的评论 here:

It's new api now, check new docs: strapi.io/documentation/3.0.0-beta.x/plugins/… formData.append('files.MODEL_FILE_FIELD_NAME', blob, filename)

这至少为我解决了!