ホームページ バックエンド開発 PHPチュートリアル 携帯電話に写真を撮ってアバターをアップロードする機能をPHPで実装

携帯電話に写真を撮ってアバターをアップロードする機能をPHPで実装

May 16, 2018 pm 02:34 PM

現在、携帯電話で写真を撮ることが非常に人気がありますが、携帯電話を使用して写真を撮り、PHP でアバターをアップロードするにはどうすればよいでしょうか?

理由は非常に簡単です。まず、携帯電話は写真情報を転送します。これは get 関数の転送ではありません。 、$GLOBALS
['HTTP_RAW_POST_DATA'] を使用するこのシステム関数は post と非常に似ていますが、$GLOBALS
['HTTP_RAW_POST_DATA'] はより豊富なデータ形式をサポートしています。詳細な違いについては、Baidu と Google を検索してください。
設計プロセスは次のとおりです:
$GLOBALS ['HTTP_RAW_POST_DATA'] は写真データ ストリーム (バイナリ) を転送します --> 空白の画像を開きます ---> データ ストリームを空白の画像に書き込みます -- 決定します有効な画像かどうか---完了。
写真の転送に使用されるバイナリ ストリームには、写真のサイズ、形式、その他の属性がすでに含まれていることに注意してください。時間の点では、携帯電話の画像情報が Web ページに転送されます。

携帯電話では通常、写真やビデオがバイナリ ストリームで構成されているのは知っていますが、ビデオもアップロードできるのでしょうか。携帯電話で写真を撮ってアバターをアップロードするのと原理は同じでしょうか?自分で勉強することもできます

コードを直接入力します

/* 

* 上传图片类 

* @parameter; 用户ID 

* @date:2011-8-15 

* @author:cy 

* */  

function UpImg($subdir){  

// 设置存储路径   

if(!emptyempty($subdir)){  

$dirnow=getcwd();  

$folder =$dirnow."/cover/".$subdir;// folder where to save images   

if( !is_dir($folder) )    mkdir($folder);  



// 图片命名   

$datenow=date('Ymd');  

$timenow=time();  

$image = $datenow.$timenow.'.jpg';  



// 图片是否已存在   

$check = $folder . '/' . $image;  

if (file_exists($check)) {  

    unlink($check);  

} else {  

    $png = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );//得到post过来的二进制原始数据   

    if(!emptyempty($png)){  

        $file = @fopen($folder."/".$image, "w");   

        fwrite($file,$png);//写入    

        fclose($file);//关闭    

        // orignal image location   

         $write_image = $folder . '/' . $image;  

      

    }else{  

        $msg = "没有数据流";  

    }     

    if(getimageInfo($write_image)){  

            $msg = "上传成功";  

        }else{$msg = "图片格式不正确";}  

}    

}else{  

$msg = "参数错误";  

}  

return $msg;  

}  



/* 

* 检测图片是否合法 

* @parameter; 文件名 

* @date:2011-8-15 

* @author:cy 

* */  

function getimageInfo($imageName = '') {    

$imageInfo = getimagesize ( $imageName );    

if ($imageInfo !== false) {    

    $imageType = strtolower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );    

//            $imageSize = filesize ( $imageInfo );     

    return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'mine' => $imageInfo ['mine'] );    

} else {    

    //不是合法的图片     

    return false;    

}    


}
ログイン後にコピー
xml-rpc を使用する場合、サーバー側は主に $_POST ではなく php 入力ストリーム input を通じてクライアント データを取得します。 array

上記の検出に基づいて、次のような要約を作成できます:

1. Content-Type 値が application/x-www-form-urlencoded の場合、PHP は対応するデータを保存します。 http リクエストの本文。
配列 $_POST に入力します。$_POST 配列に入力されたデータは、urldecode() 解析の結果です。 (実際には、Content-Type に加えて、データがフォーム データであることを示す
multipart/form-data もあります。これについては後で紹介します)
2、php://input data、としてContent-Type が multipart/form-data でない限り (この条件付き制限は後で導入されます)。次に、php:
//入力データは、データの http エンティティ本体部分と一致します。この部分的に一貫したデータの長さは、Content-Length によって指定されます。
3. Content-Type が application/x-www-form-urlencoded で、送信メソッドが POST メソッドの場合のみ、$_POST データ
と php://input データが「一致」します (引用符で囲まれている場合は、形式に一貫性がなく、内容に一貫性があることを示します)。そうでなければ、それらは矛盾します。
4. php://input は $_GET データを読み取ることができません。これは、$_GET データが http リクエストの本文部分ではなく、http リクエスト ヘッダーの PATH フィールドに query_path として書き込まれているためです。

これは、xml_rpc サーバーが file_get_contents(‘php://input’,

‘r’) を通じてデータを読み取る理由を理解するのにも役立ちます。 $_POST から読み取るのではなく、xml_rpc のデータ仕様が xml であり、その Content-Type が text/xml であるためです。


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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles