无法 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)
这至少为我解决了!
我正在尝试上传文件。我已经把它放到服务器上了,我可以看到它。我用于 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)
这至少为我解决了!