我正在使用Laravel 5.4和Guzzle将文件和图像上传到另一台服务器。
我在客户端/服务器端使用以下方法
public function store (Request $request)
{
$dataForm = $request->all();
$Client = new Client();
$response = $Client->post('http://localhost/WebService/public/api/client',
[
'multipart' =>
[
[
'name' => 'UploadIMG',
'filename' => 'image_org',
'Mime-Type' => 'image_mime',
'contents' => $ request->file('UploadIMG'),
],
]
]);
$ response = $ response-> getBody () -> getContents ();
return response () -> json (['error' => $ response]);
}
在文档中,内容部分是'contents'=> fopen('/ path / to / file','r')但是我不想保存图像但已经得到了能够发送的请求,这怎么可能? 我正在使用的方式来自Web服务中的损坏文件。 我和邮递员一起进行了一些测试,所以问题出在guzzle
答案 0 :(得分:2)
使用Guzzle的当前代码,您将传递$request->file('UploadIMG')
Illuminate\Http\UploadedFile
的实例。对于HTTP请求的“内容”,您需要将实际文件本身传递给它。
因为UploadedFile最终扩展了SplFileInfo,我的猜测是使用它的$request->file('UploadIMG')->openFile()
方法。如果你不能从那里读取它,那么我的第二个猜测就是暂时保存它,然后阅读它。