ホームページ >バックエンド開発 >PHPチュートリアル >php://input はファイルの受信に失敗しました。画像が非常に小さくなり、開くことができませんでした。

php://input はファイルの受信に失敗しました。画像が非常に小さくなり、開くことができませんでした。

WBOY
WBOYオリジナル
2016-06-23 14:21:181162ブラウズ

画像の php データ

次のように php://input を使用して画像コードを受信します
$file= file_get_contents('php://input');   $this->filename=time().'.jpg';   $dirname .='Uploads'.DIRECTORY_SEPARATOR.'face'.DIRECTORY_SEPARATOR.'1';     $url=$dirname.DIRECTORY_SEPARATOR.$this->filename;   $handle=fopen($url, 'w');   fwrite($handle, $file);   fclose($handle);

アップロードされた画像は 70 KB 以上あり、受信後、結果は 70 バイト以上しか保存されず、まったく開くことができません。 var_dump() を使用して、受信したデータをダンプします。ストリームの出力は次のとおりです: image=955e0caajw1dwnvnfmwk4j.jpg&submit=%E4%B8%8A%E5%82%B3%E6%AA%94%E6%A1%88
そうですか?この問題を解決するにはどうすればよいでしょうか?

ディスカッションへの返信 (解決策)

image=955e0caajw1dwnvnfmwk4j.jpg&submit=%E4%B8%8A%E5%82%B3%E6%AA%94%E6%A1%88
はフォーム コントロールの値です

画像のアップロードは $_FILES 配列を使用して処理する必要があります
アップロードされたファイルのデータ ストリームは php によってインターセプトされるため、php://input は他のフォーム コントロールの値のみを取得できます

image=955e0caajw1dwnvnfmwk4j .jpg&submit=%E4%B8%8A%E5% 82%B3%E6%AA%94%E6%A1%88
はフォーム コントロールの値です

写真のアップロードは $_FILES 配列で処理する必要があります
なぜならアップロードされたファイルのデータストリームはphpによってインターセプトされ、php://inputでのみ他のフォームコントロールの値を取得するために、Androidクライアントから画像を受信したいのですが、Androidはファイルストリームの形式で画像を送信します。 $_FILES はファイル ストリームを受信できますか?


image=955e0caajw1dwnvnfmwk4j.jpg&submit=%E4%B8%8A%E5%82%B3%E6%AA%94%E6%A1%88
はフォーム コントロールの値です

画像のアップロードは、 $_FILES 配列
ファイルアップロードのデータフローが php によってインターセプトされるため、php://input は他のフォーム コントロールの値しか取得できません Android クライアントから送信された画像を受信したい。ファイル ストリームの形式で、$_FILES はファイル ストリームを受信できますか?
php://input からの画像データ ストリームのみを使用できます
file_put_contents('images/1.jpg',file_get_contents("php://input"));
保存します

OK、print_r($_FILES) ただそれを知っている!
クライアントが何であっても、php://input を通じて取得できるものは次のとおりです。
image という名前のコントロールの値: 955e0caajw1dwnvnfmwk4j.jpg
submit という名前のコントロールの値: %E4%B8%8A%E5%82% B3% E6%AA%94%E6%A1%88 (大文字)

とにかく、画像データ ストリームがありません

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