ホームページ >バックエンド開発 >PHPチュートリアル >PHP はリモート イメージをローカルにダウンロード/収集します

PHP はリモート イメージをローカルにダウンロード/収集します

WBOY
WBOYオリジナル
2016-07-25 08:42:33978ブラウズ
PHP
  1. /**
  2. * リモート画像をローカルにダウンロードします
  3. *
  4. * @param string $url リモートファイルアドレス
  5. * @param string $filename 保存されたファイル名 (空の場合はランダムに生成されたファイル名、それ以外の場合は元のファイル名)
  6. * @param array $fileType 許可されるファイルの種類
  7. * @param string $dirName ファイルが保存されるパス (パスの残りの部分は時間システムに基づいて自動的に生成されます)
  8. * @param int $typeファイルをリモートで
  9. * @return json ファイル名、ファイル保存パスを返します
  10. * @author blog.snsgou.com
  11. */
  12. function download_image($url, $fileName = '', $dirName, $fileType = array('jpg', 'gif', 'png'), $type = 1 )
  13. {
  14. if ($url == '')
  15. {
  16. return false;
  17. }
  18. // ファイルの元のファイル名を取得します
  19. $defaultFileName = Basename($url);
  20. // ファイルを取得しますtype
  21. $suffix = substr(strrchr($url, '.'), 1);
  22. if (!in_array($suffix, $fileType))
  23. {
  24. return false;
  25. }
  26. // 保存したファイル名を設定
  27. $fileName = = '' ? time() . rand(0, 9) . $suffix : $defaultFileName;
  28. // if ($type) {
  29. $ ch =curl_init( );
  30. $timeout = 30;
  31. curl_setopt($ch, CURLOPT_URL, $url);
  32. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  33. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  34. $file =curl_exec($ ch);
  35. curl_close($ch);
  36. }
  37. else
  38. {
  39. ob_start();
  40. readfile($url);
  41. $file = ob_get_contents();
  42. ob_end_clean();
  43. }
  44. / / ファイルの保存パスを設定します
  45. //$dirName = $dirName . date('Y', time()) . date( 'd', time());
  46. $dirName = $dirName . date('Ym', time());
  47. if (!file_exists($dirName))
  48. {
  49. mkdir($dirName, 0777) , true);
  50. }
  51. // ファイルを保存します
  52. $res = fopen($dirName . '/' . $fileName, 'a');
  53. fwrite($res, $file);
  54. fclose($res) ;
  55. return array (
  56. 'fileName' => $fileName,
  57. 'saveDir' => $dirName
  58. );
  59. }
コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。