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

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

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

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

Q&A

解決済

2回答

906閲覧

PHPでポストされたデータの受け取り方の違いについて教えてください。

UekiKouji

総合スコア121

PHP

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

0グッド

0クリップ

投稿2018/06/22 02:54

編集2018/06/22 02:58

いつもお世話になります。

PHPについて質問です。画像ファイルの受け取り方についてです。
以下の①と②の場合あります。この違いについて教えてください。

①file_get_contentsで受け取った場合

$file = file_get_contents("php://input"); file_put_contents('/home/sample/sample.jpg',$file);

②$_FILESで受け取った場合

move_uploaded_file($_FILES['uploadfile']['tmp_name'], '/home/sample/sample.jpg');

①はファイルをバイナリにして受け取っている。
②はファイル自体は一時的なテンポラリフォルダにファイル自体をアップロードし、それを受け取っている。

という認識であっていますでしょうか。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/22 02:59

それぞれの関数のリファレンスドキュメント類は目を通していますか?
UekiKouji

2018/06/22 03:01

目をとおしたのですが、どうしても理解できなくて質問しました。
UekiKouji

2018/06/22 03:02

訂正します。認識があっているかどうかを確認したくて質問をさせていただきました。
guest

回答2

0

ベストアンサー

file_get_contents — ファイルの内容を全て文字列に読み込む
文字列に読み込むというよりも、既に存在する指定されたところにあるもの(ファイルもしくはストリームコンテキスト)を読み込む関数で、
"php://input"なんて記述の場合はhttpプロトコルに則ってクライアント(webブラウザなど)から送信されたデータbody部をまるっと格納します。
参考:PHP: php:// - Manual
仮にPOST送信されたデータが複数あろうとも、そのまま、MIMEデコードすらされず書き出されるはずです。
(POST送信されたデータ列を分割するためのboundary文字列すらデコードされずに書き出されるという意味。)

file_put_contents — 文字列をファイルに書き込む
変数の保持しているものを指定されたファイルに出力(書き出す)します。

move_uploaded_file — アップロードされたファイルを新しい位置に移動する
phpの機能としてファイルアップロードを処理して一時ファイルとして
webサーバー上の何処かに一旦書き出しておく機能があり、
その機能によって作られた一時ファイルを指定の箇所に移動するものです。
もしもPOST送信で複数ファイルをアップロードされた場合には
既に元のファイル個々の単位で一時ファイルができているので、
最も楽にアップロードされたファイルを処理できるものと思います。

投稿2018/06/22 03:14

編集2018/06/22 03:15
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ごめんなさい。勘違いしてました。"php://input"ですね
スルーしてください

全然違います。

① 元々どこか(サーバー上)に置いてあるファイルを扱う
② フォームから送信されたファイルを扱う

投稿2018/06/22 02:57

編集2018/06/22 02:59
m.ts10806

総合スコア80842

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

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

UekiKouji

2018/06/22 03:05

僕も勘違いしていました。①は、php://inputのことですね。 ①の方が生データなのですね。 ②の方がフォームから送信されたデータなのですね。 理解しました。
m.ts10806

2018/06/22 03:23

m6uさんが回答してくれていますが、PHPマニュアルをそれぞれ熟読された方が良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問