質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2114閲覧

Laravel Storage::getで外部サイトの画像内容を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2018/11/07 09:04

次のようなコードを書いて、外部のサイトの画像の内容を取得しようとしています。

PHP

1$contents = Storage::get('https://www.google.co.jp/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png');

しかし次のようなエラーが発生して処理が止まってしまいました。

local.ERROR: League\Flysystem\FileNotFoundException: File not found at path: https:/www.google.co.jp/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png in xxx/vendor/league/flysystem/src/Filesystem.php:386

指定しているパスはGoogleトップページの画像です。ブラウザに直接URLを入力すれば問題なく表示されることは確認しました。
File not found…となってしまいますが、これは外部サイトの画像を取得しようとしているために発生するのでしょうか?
また、Storage::get、Storage::copy以外に外部サイトの画像情報を取得し、コピーする方法はあるでしょうか。

公式ドキュメントの以下のページを読んだのですがよくわかりませんでした。
詳しい方がいらっしゃいましたら、できるだけ易しい解説で教えて頂けますと幸いです。
https://readouble.com/laravel/5.7/ja/filesystem.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

osamuya

2018/11/07 09:39

http://のプロトコルでつなげようとしていると思うのですが、その同じアドレスでfile_get_contentsやwegetなどで画像自体を取得することはできますか?ブラウザとサーバーではおそらくIPが違ったりネットワークが違うので。。
退会済みユーザー

退会済みユーザー

2018/11/07 09:52

ひとまずfile_get_contentsを試してみましたが、falseでなく空白が返ってきました。都合によりprint_rなど使えない状況下にあるため、ご容赦ください。
guest

回答1

0

ベストアンサー

Storageは、ローカルのファイルしか扱えないようです。

file_get_contents を使うのが良さそうです。

投稿2018/11/07 11:27

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/07 12:52

ありがとうございます。 file_get_contentsだと空白がかえってしまうのですが、何か手立てはあるでしょうか。もしご存知でしたらお願いします。
kazto

2018/11/07 13:05

どのように使いましたか?
退会済みユーザー

退会済みユーザー

2018/11/07 13:11

$homepage = file_get_contents('http://www.example.com/'); \Log::debug('log', ['img' => $homepage]); というように利用しました。 ログには「log」とだけあり、file_get_contentsで空白がかえってきたのだと認識しました。
kazto

2018/11/07 13:46

googlelogo_color_272x92dp.pngではなく、'http://www.example.com/'と言う文字列をそのまま使ったのでしょうか。 Yesの場合、example.comは実在しないアドレスであるため、falseが返ります。 Noの場合(ちゃんと画像のURLを使った)、`$homepage`にはバイナリデータが格納されます。バイナリデータの値によってはログでは正しく表示されないことも考えられます。
退会済みユーザー

退会済みユーザー

2018/11/08 00:56

ありがとうございます。 googlelogo_color_272x92dp.pngを使いました。 ログだと表示されないことがあるのですね。falseとはログに表示されなかったので、取れている可能性もあるかもしれない、ということでしょうか。Storage::getを諦めて、file_get_contentsでもう少し試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問