ホームページ >バックエンド開発 >PHPチュートリアル >PHP はバイナリ データ ストリームを受信し、それをピクチャに変換します_PHP チュートリアル
PHPコード
1
2 /**
3 * 写真カテゴリ
4 * @author Haroldphp@163.com
5 * @バージョン 1.0
6 *
7*/
8クラス画像{
9 const ROOT_PATH = './';
10 const FAIL_WRITE_DATA = 'データの書き込みに失敗しました';
11 //データフローなし
12 const NO_STREAM_DATA = '投稿データが空です';
13 //画像の種類が間違っています
14 const NOT_CORRECT_TYPE = '正しい画像タイプではありません';
15 //ファイルを作成できません
16 const CAN_NOT_CREATE_FILE = 'ファイルを作成できません';
17 //アップロード画像名
18 公開 $image_name;
19 //画像の保存名
20 公開 $save_name;
21 //画像保存パス
22 公開 $save_dir;
23 //ディレクトリ + 画像へのフルパス
24 パブリック $save_fullpath;
25
26 /**
27 * コンストラクター
28 * @param String $save_name 写真の名前を保存します
29 * @param String $save_dir 保存パス名
30*/
31 パブリック関数 __construct($save_name, $save_dir) {
32 //set_error_handler ( $this->error_handler () );
33
34 //保存する画像の名前を設定します。設定しない場合は、一意のファイル名がランダムに生成されます
35 $this->save_name = $save_name ? $save_name : md5 ( mt_rand (), uniqid () );
36 //画像を保存するパスを設定します。設定されていない場合は、ディレクトリの保存に年/月/日の形式を使用します
37 $this->save_dir = $save_dir ? self::ROOT_PATH .$save_dir : self::ROOT_PATH .date ( 'Y/m/d' );
38
39 //フォルダーを作成します
40 @$this->create_dir ($this->save_dir);
41 // ディレクトリと画像のフルパスを設定 www.2cto.com
42 $this->save_fullpath = $this->save_dir '/' 。
43 }
44 //PHP4対応
45 公開関数画像($save_name) {
46 $this->__construct ($save_name);
47 }
48
49 パブリック関数 stream2Image() {
50 //バイナリデータストリーム
51 $data = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );
52 // データ ストリームが空でない場合は、操作を保存します
53 if (! 空 ( $data )) {
54 // データ ストリームを作成して書き込み、ファイルを保存します
55 if (@$fp = fopen ( $this->save_fullpath, 'w+' )) {
56
57 58 $baseurl = "http://" 。 $_SERVER ["SERVER_NAME"] . 「:」。 $_SERVER ["SERVER_PORT"] . dirname ( $_SERVER ["SCRIPT_NAME"] ) 。 '/' 。 $this->save_name;
59 if ( $this->getimageInfo ( $baseurl )) {
60 echo $baseurl;
61 } else {
62 echo ( self::NOT_CORRECT_TYPE );
63 }
64 } else {
65
66 }
67 } else {
68 //データストリームへの受信はありません
69 echo ( self::NO_STREAM_DATA );
70 }
71 }
72 /**
73 * フォルダーを作成します
74 * @param String $dirName フォルダーのパス名
75*/
76 public function create_dir($dirName, $recursive = 1,$mode=0777) {
77 ! is_dir ( $dirName ) && mkdir ( $dirName,$mode,$recursive );
78 }
79 /**
80 * 画像情報を取得し、画像の幅、高さ、タイプ、サイズ、画像の種類を返します
81 * @param String $imageName 画像名
82*/
83 public function getimageInfo($imageName = '') {
84 $imageInfo = getimagesize ( $imageName );
85 if ($imageInfo !== false) {
86 $imageType = strto lower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
87 $imageSize = ファイルサイズ ( $imageInfo );
88 return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'size' => $imageSize, '私のもの' => $imageInfo ['私のもの'] );
89 } else {
90 //違法な画像
91 false を返す;
92 }
93
94 }
95
96 /*プライベート関数 error_handler($a, $b) {
97 エコー $a, $b;
98 }*/
99
100 }