猿问

如何使用 Laravel 将图像上传到 Imgur?

有什么方法可以使用 Laravel 将图像上传到 Imgur。


我目前正在使用


$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.imgur.com/3/image', [

    'headers' => [

        'authorization' => 'Client-ID ' . 'app_id',

        'content-type' => 'application/x-www-form-urlencoded',

    ],

    'form_params' => [

        'image' => base64_encode(file_get_contents($request->file('thumbnail')))

    ],

]);

return response()->json(json_decode(($response->getBody()->getContents())));

我的刀片文件是


<tr>

    <td>Thumbnail</td>

    <td>

        <input type="file" name="file" id="file">

    </td>

</tr>

我继续得到Call to a member function path() on null


我想要做的是上传文件,将其上传到 Imgur 并获取 URL 以将其插入到我的数据库中。


慕尼黑8549860
浏览 128回答 2
2回答

开满天机

尝试这个,$file = $request->file('file');&nbsp; &nbsp; &nbsp; &nbsp; $file_path = $file->getPathName();&nbsp; &nbsp; &nbsp; &nbsp; $client = new \GuzzleHttp\Client();&nbsp; &nbsp; &nbsp; &nbsp; $response = $client->request('POST', 'https://api.imgur.com/3/image', [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'headers' => [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'authorization' => 'Client-ID ' . 'your-client-id-here',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'content-type' => 'application/x-www-form-urlencoded',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'form_params' => [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'image' => base64_encode(file_get_contents($request->file('file')->path($file_path)))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]);&nbsp; &nbsp; &nbsp; &nbsp; $data['file'] = data_get(response()->json(json_decode(($response->getBody()->getContents())))->getData(), 'data.link');

慕桂英3389331

Laravel 9 及以上答案的更新,&nbsp; &nbsp; &nbsp; &nbsp; use Illuminate\Support\Facades\Http;&nbsp; &nbsp; &nbsp; &nbsp; $file = $request->file('file');&nbsp; &nbsp; &nbsp; &nbsp; $file_path = $file->getPathName();&nbsp; &nbsp; &nbsp; &nbsp; $response = Http::withHeaders([&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'authorization' => 'Client-ID ' . 'your-client-id-here',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'content-type' => 'application/x-www-form-urlencoded',&nbsp; &nbsp; &nbsp; &nbsp; ])->send('POST', 'https://api.imgur.com/3/image', [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'form_params' => [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'image' => base64_encode(file_get_contents($request->file('file')->path($file_path)))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]);&nbsp; &nbsp; &nbsp; &nbsp; $data['file'] = data_get(response()->json(json_decode(($response->getBody()->getContents())))->getData(), 'data.link');不要使用 http Facadepost()方法将表单发送到 imgur,它会序列化表单数据,服务器将收到 400 bad method 响应。
随时随地看视频慕课网APP
我要回答