使用laravel将图像上传到Web服务

时间:2018-02-06 17:56:27

标签: laravel web-services guzzle

我正在使用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

1 个答案:

答案 0 :(得分:2)

使用Guzzle的当前代码,您将传递$request->file('UploadIMG') Illuminate\Http\UploadedFile的实例。对于HTTP请求的“内容”,您需要将实际文件本身传递给它。

因为UploadedFile最终扩展了SplFileInfo,我的猜测是使用它的$request->file('UploadIMG')->openFile()方法。如果你不能从那里读取它,那么我的第二个猜测就是暂时保存它,然后阅读它。