问题描述
$router->group(['prefix' => 'api/v1'],function() use ($router) {
$router->group(['prefix' => 'user'],function() use ($router) {
$router->post('/fund','User\FundsController@create');
});
});
public function create(Request $request) {
$validator = Validator::make($request->all(),[
'field1' => 'required|string|exists:colleges,id','field2' => 'required|string|max:250','field3' => 'required|date','field4' => 'required|date','file1' => 'required|file','file2' => 'required|file'
]);
if ($validator->fails()) {
return response()->json(['status' => false,'message' => $validator->errors()],409);
}
try {
$filename1 = $this->uploadFile1($request);
$filename2 = $this->uploadFile2($request);
$event = new Event;
$event->id = Str::random(24);
$event->field1 = $request->input('field1');
$event->field2 = $request->input('field2');
$event->field3 = $request->input('field3');
$event->field4 = $request->input('field4');
$event->file1 = $filename1;
$event->file2 = $filename2;
$event->save();
return response()->json(['status' => true,'message' => 'Event saved successfully'],201);
} catch (\Exception $e) {
return response()->json(['status' => false,'message' => 'Event Couldn\'t be saved'],409);
}
}
它已被邮递员成功测试。
但是,我无法从Laravel应用程序向此API发出请求。控制器代码为:
public function addFund(Request $request) {
// OPTION 1: USING LaraVEL HTTP CLIENT
$responSEObj = Http::attach(
'file1',$request->file('fileinput1')
)->post('http://localhost:8001/api/v1/user/fund',[
'field1' => session('id'),'field2' => $request->input('textinput1'),'field3' => $request->input('textinput2'),'field4' => $request->input('textinput3')
]);
$responseJson = $responSEObj->json();
if ($responSEObj->status() == 200) {
return response()->json([
'status' => true,'message' => $responseJson['message']
]);
} else {
return response()->json([
'status' => false,'errors' => $responseJson['message']
]);
}
// OPTION 2: USING GUZZLE HTTP CLIENT
$client = new Client();
$responSEObj = $client->request('POST','http://localhost:8001/api/v1/user/fund',[
'multipart' => [
[
'name' => 'field1','contents' => session('id')
],[
'name' => 'field2','contents' => $request->input('textinput1')
],[
'name' => 'field3','contents' => $request->input('textinput2')
],[
'name' => 'field4','contents' => $request->input('textinput3')
],[
'name' => 'file1','contents' => $request->file('fileinput1')
],[
'name' => 'file2','contents' => $request->file('fileinput2')
]
]
]);
if ($responSEObj->getStatusCode() == 200) {
return response()->json([
'status' => true,'message' => json_decode($responSEObj->getBody()->getContents(),true)
]);
} else {
return response()->json([
'status' => false,'errors' => json_decode($responSEObj->getBody()->getContents(),true)
]);
}
}
请注意,我在这里只使用了选项1或选项2。但是两者都失败了,错误消息为:
{
"status" : false,"message" : {
"file1" : [
"The file1 must be a file."
],"file2" : [
"The file2 must be a file."
]
}
}
所以我需要的是这个。通过Laravel Controller将多个文件(您从网页接收到的)传递到Lumen端点的正确方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)