php远程下载头像,Laravel 项目中 远程把图片下载到本地

如今,开发应用时,我们会从不断增多的大量专用组件中选择合适的。既然已经有了 guzzlehttp/guzzle 组件,为什么还要浪费时间自己编写处理HTTP请求和响应库呢?

最近在做第三方登录,用户的头像处理成了一个问题。原来用户系统中的头像都是以文件的形式保存在我们自己的服务器中。

第三方账号的头像是以 url 的形式传入后台,考虑先通过后台将图片下载在服务器,重命名后存表。这样就与之前的用户系统一致,不用改代码。

安装 guzzle 组件

安装 guzzle 组件需要先安装 composer

# Install Composer

curl -sS https://getcomposer.org/installer | php

使用 composer 安装 guzzle

php composer.phar require guzzlehttp/guzzle

# 或者

composer require guzzlehttp/guzzle

用法

命名空间中引入 guzzle 依赖

use GuzzleHttp\Client;

use GuzzleHttp\Exception\GuzzleException;

保存头像,这里使用 md5 加密 url 作为文件名,基本可以保证唯一性。后缀选择 jpg,不知道会不会引起问题,暂时先这么处理了。

if (!empty($avatar)) {

if (strpos($avatar, 'http://') === 0 || strpos($avatar, 'https://') === 0) {

$client = new Client(['verify' => false]); //忽略SSL错误

$path = APP_ROOT . config('common.picture_path.user_avatar_path') . md5($avatar) . '.jpg';

$response = $client->get($avatar, ['save_to' => $path]); //保存远程url到文件

if ($response->getStatusCode() == 200) {

$avatar = md5($avatar) . '.jpg';

}

}

}

将生成后的文件名入库即可。

使用 curl-class 的 download 方法也可以实现相同的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 使用 SFTP 将文件下载到本地,可以使用 `league/flysystem-sftp` 扩展包来实现。以下是一个简单的示例: ```php use Illuminate\Support\Facades\Storage; use League\Flysystem\Sftp\SftpAdapter; // 配置 SFTP 连接参数 $config = [ 'host' => 'example.com', 'port' => 22, 'username' => 'username', 'password' => 'password', 'root' => '/path/to/files', ]; // 创建 SFTP 适配器 $adapter = new SftpAdapter($config); // 创建文件系统实例 $filesystem = new \Illuminate\Filesystem\Filesystem($adapter); // 下载文件到本地 $filesystem->get('remote_file.txt', 'local_file.txt'); ``` 在上面的示例,我们首先配置了 SFTP 连接参数,然后创建了一个 `SftpAdapter` 实例,用于连接到远程 SFTP 服务器。然后,我们创建了一个 `Filesystem` 实例,用于在远程和本地文件系统之间进行操作。最后,我们使用 `get` 方法将远程文件 `remote_file.txt` 下载到本地文件 `local_file.txt`。 请注意,如果要在 Laravel 使用 SFTP,您还需要在 `config/filesystems.php` 文件配置 SFTP 驱动程序。例如: ```php 'sftp' => [ 'driver' => 'sftp', 'host' => 'example.com', 'port' => 22, 'username' => 'username', 'password' => 'password', 'root' => '/path/to/files', 'timeout' => 10, ], ``` 一旦配置完成,您可以像这样使用 `Storage` Facade 下载文件: ```php use Illuminate\Support\Facades\Storage; Storage::disk('sftp')->get('remote_file.txt', 'local_file.txt'); ``` 这将使用 `sftp` 驱动程序从远程 SFTP 服务器下载文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值