我正在将文件上传到基于laravel构建的API。在下面的代码中,数据被发送到API。但是,如何获取上传到API的文件?
控制器
$file = $request->file('imported-file');
$name = $file->getClientOriginalName();
$path ='/Users/desktop/Folder/laravelapp/public/Voice/';
$client = new \GuzzleHttp\Client();
$fileinfo = array(
'message' => 'Testing content',
'recipient' => "102425",
);
$res = $client->request('POST', $url, [
'multipart' => [
[
'name' => 'FileContents',
'contents' => file_get_contents($path . $name),
'filename' => $name
],
[
'name' => 'FileInfo',
'contents' => json_encode($fileinfo)
]
],
]);
API控制器
if (!empty('FileInfo')) {
return response()->json([
'status' => 'error',
'file_content' => $request->file('FileContents'),
'media'=>$request->hasFile('FileContents'),
]);
}
这是回应,我得到"file":null,"file_content":{},"media":true
当media
显示真实含义时,为什么文件内容为空?
答案 0 :(得分:0)
可能有多种原因:
contentType:否, processData:否, 缓存:false
这将帮助您的表单请求不转换为字符串有效负载,也不会强制ajax设置内容类型。尝试使用FormData。
更新:在this post中找到类似的答案对此有详细的答案。