我正在制作一个Web应用程序,在前端使用angular,在后端使用laravel。 但是,当我尝试将一些数据上传到laravel API时遇到了一些问题。
我正在Angular上使用formdata,因为上传文件需要它。但是当我将数据发送到Laravel时,它并没有通过验证,因为Laravel正在获取空数据。
这是在提交时调用的函数。
onUpload() {
const fd = new FormData;
fd.append('video', this.video);
fd.append('image', this.image);
fd.append('title', 'Hello world');
fd.append('description', 'Hello world');
fd.append('userId', '1');
fd.append('categoryId', '1');
const headers = new HttpHeaders({
'Content-Type': 'application/json'
});
this.http.post('here goes the real url', fd, {
headers: headers
}).subscribe(event => {
console.log(event);
});
}
这是我在Laravel上的验证器。
public function rules(){
$datos = $this->validationData();
return [
"description" => ["max:2000"],
"video" => ["required", "mimes:mp4,mov,ogg"],
"image" => ["required", "image", "mimes:jpg,jpeg,png,gif,webp"],
"title" => ["required","min:4", "max:100"],
"userId" => ["required", "numeric"],
"categoryId" =>["numeric"]
];
}
而且,这是错误消息:
errors:
image: ["The image field is required."]
title: ["The title field is required."]
video: ["The video field is required."]
userId: ["The user id field is required."]
__proto__: Object
message: "The given data was invalid."
我需要Laravel上的一些其他东西来读取数据吗?还是我上传错误? 非常感谢您的宝贵时间。
答案 0 :(得分:1)
尝试将Content-type
更改为multipart/form-data
const headers = new HttpHeaders({
'Content-Type': 'multipart/form-data'
});
答案 1 :(得分:-1)
从标题中删除“ Content-Type”:“ ...”。为我工作:
我的代码是:importFile(unit_id,data):可观察{让标头= new HttpHeaders()。set('Content-Type','multipart / form-data')。set('x-access-token' ,this.token);返回this.http.post(this.api + /unit/${unit_id}/import
,数据,{reportProgress:true,观察:'events',headers:headers})。pipe(); }
现在:importFile(unit_id,data):可观察{让标头= new HttpHeaders()。set('x-access-token',this.token);返回this.http.post(this.api + /unit/${unit_id}/import
,数据,{reportProgress:true,观察:'events',headers:headers})。pipe(); }