将图像从另一个域url上传到我的服务器

时间:2016-01-03 08:55:26

标签: javascript php angularjs laravel canvas

我正在运行angularjs和laravel并计划将facebook上的用户个人资料上传到我的服务器并将其加载到画布上。

因为在将其更改为 dataUrl 时加载其他域时,画布会出现 CORS 问题。

那么在fb域上获取图像的url并将其上传到我的服务器后获取图像数据的最佳方法是什么

2 个答案:

答案 0 :(得分:1)

首先,您必须从API获取个人资料图片网址。 为此,您必须向http://graph.facebook.com/v2.5/me?fields=picture申请,提供您的访问令牌。

它将返回如下内容:

{
  "picture": {
    "data": {
      "is_silhouette": false,
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xpt1/v/t1.0-1/p50x50/picture.jpg"
    }
  },
  "id": "10000userid"
}

所以你必须只获得有趣的部分:

// requesting
$get = file_get_contents('http://graph.facebook.com/v2.5/me?fields=picture&access_token=YOUR_ACCESS_TOKEN_HERE');

// parsing
$get = json_decode($get);

// getting the part you want
$picture_url = $get->picture->data->url;

从Facebook API获取图片网址后,您只需:

// download it
$download = file_get_contents($picture_url);

// get extension (I'm not sure if Facebook really converts everything to JPEG, I'm not a huge Facebook user)
$extension = strtolower(end(explode(".", $download)));

// save it on your server
file_put_contents('path/to/save.'.$extension, $download);

答案 1 :(得分:0)

$url = 'https://yourimageurl.com/test.png';
$img = 'foo.png';
file_put_contents($img, file_get_contents($url));