Laravel API 正在接收写在 "null" 的引号之间的字符串,而不是空字段
Laravel API is receiving string between quotes written "null" instead of a null field
我正在构建一个带有 FormData
的表单,用于将文件连同其他信息发送到 Laravel API,但文件可能是 null
,根据规则:
$validator = Validator::make(Request::all(), [
...
"file" => "nullable|mimes:pdf,doc,docx"
]);
并且从前端发送 FormData
:
const data = new FormData();
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
data.append("file", file ? file[0] : null);
file
的默认值为 null
,但是当我检查 Request::all()
的日志时,我看到以下内容:
[2018-08-18 06:55:13] local.INFO: array (
..
'file' => 'null',
)
你的文件看起来像一个数组所以你可以做的是检查它是否是一个数组如果是然后分配文件[0]否则分配文件
const data = new FormData();
let fileData = file;
if(Array.isArray(file)){
fileData = file[0];
}else{
fileData = file
}
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
data.append("file", fileData);
或
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
data.append("file", Array.isArray(file) ? file[0] : file);
在将文件附加到 formData
对象之前,使用 typeof
检查文件是否为 object
。
I would suggest you to loop through the passing values because it makes the code more compact and allows to add n
number of input values.
let formData = new FormData();
for(var key in userData){
if(key == "file" && typeof userData['file'] == "object"){
formData.append(key, userData[key][0]);
}
formData.append(key, userData[key]);
}
不要向表单数据中添加 null
,只需有条件地添加数据即可:
const data = new FormData();
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
if (Array.isArray(file) && file.length > 0) {
data.append("file", file[0]);
}
您的验证已经将 file
字段视为可选字段,因此后端应该可以很好地处理它。
我正在构建一个带有 FormData
的表单,用于将文件连同其他信息发送到 Laravel API,但文件可能是 null
,根据规则:
$validator = Validator::make(Request::all(), [
...
"file" => "nullable|mimes:pdf,doc,docx"
]);
并且从前端发送 FormData
:
const data = new FormData();
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
data.append("file", file ? file[0] : null);
file
的默认值为 null
,但是当我检查 Request::all()
的日志时,我看到以下内容:
[2018-08-18 06:55:13] local.INFO: array (
..
'file' => 'null',
)
你的文件看起来像一个数组所以你可以做的是检查它是否是一个数组如果是然后分配文件[0]否则分配文件
const data = new FormData();
let fileData = file;
if(Array.isArray(file)){
fileData = file[0];
}else{
fileData = file
}
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
data.append("file", fileData);
或
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
data.append("file", Array.isArray(file) ? file[0] : file);
在将文件附加到 formData
对象之前,使用 typeof
检查文件是否为 object
。
I would suggest you to loop through the passing values because it makes the code more compact and allows to add
n
number of input values.
let formData = new FormData();
for(var key in userData){
if(key == "file" && typeof userData['file'] == "object"){
formData.append(key, userData[key][0]);
}
formData.append(key, userData[key]);
}
不要向表单数据中添加 null
,只需有条件地添加数据即可:
const data = new FormData();
data.append("name", name);
data.append("instructions", instructions);
data.append("reward", reward);
data.append("deadline", deadline);
if (Array.isArray(file) && file.length > 0) {
data.append("file", file[0]);
}
您的验证已经将 file
字段视为可选字段,因此后端应该可以很好地处理它。