php接收二進制文件轉換成圖片


$GLOBALS['HTTP_RAW_POST_DATA']

最近在做Flash在線裁剪圖片 生成圖片的東西。
通過Flash POST 圖片的二進制數據給php,由php生成圖片保存。

開始想到用$_POST來接受。后來發現行不通。
查閱了很多資料 明白了所以然,這里做一個筆記:

於PHP默認只識別application/x-www.form-urlencoded標准的數據類型。
因此,對型如text/xml 或者 soap 或者 application/octet-stream 之類的內容無法解析,如果用$_POST數組來接收就會失敗!
故保留原型,交給$GLOBALS['HTTP_RAW_POST_DATA'] 來接收。

另外還有一項 php://input 也可以實現此這個功能

php://input 允許讀取 POST 的原始數據。和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,並且不需要任何特殊的 php.ini 設置。php://input和 $HTTP_RAW_POST_DATA 不能用於 enctype="multipart/form-data"。

我在Flash中使用JPGEncoder把BitMapData轉成二進制,然后post給php

php頁面代碼如下:

<?php
$filename="teststream.jpg";//要生成的圖片名字

$xmlstr =  $GLOBALS[HTTP_RAW_POST_DATA];
if(empty($xmlstr)) $xmlstr = file_get_contents('php://input');

$jpg = $xmlstr;//得到post過來的二進制原始數據
$file = fopen("cache/pic/".$filename,"w");//打開文件准備寫入
fwrite($file,$jpg);//寫入
fclose($file);//關閉

?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM