美文网首页
Laravel 项目中 远程把图片下载到本地

Laravel 项目中 远程把图片下载到本地

作者: zzpwestlife | 来源:发表于2017-05-09 13:04 被阅读1780次

如今,开发应用时,我们会从不断增多的大量专用组件中选择合适的。既然已经有了 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 文档

命名空间中引入 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 方法也可以实现相同的效果。

相关文章

  • Laravel 项目中 远程把图片下载到本地

    如今,开发应用时,我们会从不断增多的大量专用组件中选择合适的。既然已经有了 guzzlehttp/guzzle 组...

  • git的本地与远程操作

    删除本地分支 删除远程分支 打本地标签 将本地标签push到远程 把本地分支push到远程 创建一个分支

  • git本地分支和远程分支如何关联

    一、如何把本地新建分支同步到远程分支上(注:该分支在远程上没有)? 二、又如何在本地把远程分支上新建分支同步到本地...

  • git基本操作

    分支 新建本地分支 新建远程分支把新建的本地分支push到远程服务器,远程分支与本地分支同名(也可以改名): 删除...

  • git远程分支与本地分支 -- git使用笔记2

    记录一哈git远程分支管理命令 远程到本地 本地到远程

  • 下载文件到本地

    //把图片下载到本地的目录,返回本地目录publicstaticfunctionimgDownLocal($img...

  • 远程文件复制

    1.scp 从远程复制到本地 从本地复制到远程 2.rsync 从远程复制到本地 从本地复制到远程 注:rsync...

  • Git常用命令

    克隆远程项目到本地: 新建本地分支: 本地分支push到远程服务器: OR ---> 本地分支与远程分支同名 查...

  • 本地与远程库的操作

    本地创建推送到远程 远程项目克隆到本地

  • Git基础命令(四)

    本地库与远程库关联 关联命令 查看远程库的信息 查看远程库的详细信息 将远程库克隆到本地库中 把远程库中最新的提交...

网友评论

      本文标题:Laravel 项目中 远程把图片下载到本地

      本文链接:https://www.haomeiwen.com/subject/sgmmtxtx.html