如何在 Laravel 里实现文件转发
1.需求
现有两台服务器:laravel 项目所在服务器(服务器A)、备份服务器(服务器B),目标是将用户上传的图片保存在服务器A
的同时备份至服务器B
2.实现方式
我使用zttp扩展配合CURLFile将服务器A
的文件发送至服务器B
服务器A转发代码块
$url = "http://api.test/api/v1/images/bak";
$data = [
'image' => new \CURLFile($upload_path."/".$file_name,$extension),
'folder_name' => $folder_name,
'file_name' => $file_name
];
$response = Zttp::asFormParams()->withHeaders([
'X-Requested-With'=>'XMLHttpRequest'
])->post($url,$data);
dd($response->json());
服务器B接收代码块
return $request->file('image');
3.问题
服务器B
返回的数据为null,打印$_FILES数组也没有数据,这是为什么
我想你应该是想解决分布式部署的laravel项目,上传的话只能上传到一个服务器,获取图片的时候负载均衡到另外一台服务器就获取不到图片的情况吧。首先解决一下你的问题:试一下使用asMultipart()而不是asFormParams();。
然后,解决这种问题其实有更好的办法:
以上,可以参考下。