導航:首頁 > 編程語言 > php接收二進制流

php接收二進制流

發布時間:2022-05-21 20:43:15

⑴ <input type="file" name="file"> php中$_POSR['file']接收到的是路徑還是二進制數據流

你要在<form>標簽內加enctype=multipart/form-data 二進制流,但是這不是將圖片上傳到資料庫,而是上傳到伺服器的臨時文件夾下.之後在用move_uploaded_file()方法將上傳的文件移動到一個目錄下.mysql存儲的只是這個上傳文件的名稱,或者是這個上傳文件的路徑+文件名稱.這樣你在html裡面的<img>標簽中的src屬性裡面填上路徑+名稱就可以找到上傳的圖片,顯示出來了!

⑵ php接收二進制文件怎麼替換裡面的內容

php接收二進制文件怎麼替換裡面的內容
php接收二進制文件如下:
<?php
header('Content-type: text/html; charset=utf-8');
error_reporting(0);
$filename = $_GET["filename"];
$filesize = $_GET["filesize"];

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

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

接收的二進制文件中非標准字元(>0x7F)的位元組被替換為三個位元組,比如E2替換為EF 9F A2
現在我想在Php接收到文件之後還原回去,把EF 9F A2替換為E2,請問這個怎麼實現?

非常感謝!
PHP 二進制

------解決方案--------------------
他的數據轉換規則是這樣的:
文件頭不變,文件頭多長不清楚,圖上到0050h都一樣的
<=7F的位元組,因為utf-8也一樣,可以認為也轉換了utf-8
>=80的位元組,高位加上F7,再轉utf-8,例如E2就變成F7E2然後轉utf-8成為EF 9F A2

至少他圖中E2/FB/91/B2/81...都滿足這個規則
------解決方案--------------------
本帖最後由 xuzuning 於 2013-05-02 15:35:02 編輯
用正則可這樣寫
假定數據已把存在變數 $s 中,則
$s = preg_replace_callback('/[\xef]../', 'foo', $s);

function foo($r) {

$c = (ord($r[0]{1}) & 0x03) << 6;

$c += (ord($r[0]{2}) & 0x3f);

return chr($c);

}

⑶ Thinkphp二進制圖片接收和轉換

可以直接用post接受二進制數據,然後用header函數輸出圖片,

⑷ PHP關於獲取二進制數據流轉換為文件的方法

file_put_contents此函數可以安全用於二進制對象

⑸ php如何接受客戶端傳送過來的二進制流然後生成圖片

sybase_connect連上資料庫。
語法: int sybase_connect(string [servername], string [username], string [password]);
返回值: 整數函數種類: 資料庫功能 本函數用來打開與 Sybase 資料庫的連接。
參數 servername 為欲連上的資料庫伺服器名稱。
參數 username 及 password 可省略,分別為連接使用的帳號及密碼。
使用本函數需注意早點關閉資料庫,以減少系統的負擔。
連接成功則返回資料庫的連接代號,失敗返回 false 值。

⑹ php如何接收二進制流圖片

<?php
/**
*圖片類
*@authorhttp://blog.csdn.net/haiqiao_2010
*@version1.0
*
*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"。
*/
classimageUpload{
constROOT_PATH='./';
constFAIL_WRITE_DATA='Failtowritedata';
//沒有數據流
constNO_STREAM_DATA='Thepostdataisempty';
//圖片類型不正確
constNOT_CORRECT_TYPE='Notacorrectimagetype';
//不能創建文件
constCAN_NOT_CREATE_FILE='Cannotcreatefile';
//上傳圖片名稱
public$image_name;
//圖片保存名稱
public$save_name;
//圖片保存路徑
public$save_dir;
//目錄+圖片完整路徑
public$save_fullpath;

⑺ php怎樣將二進制流存到文件中

整形轉化成2二進制可以用base_convert:

$str=0x8000;

echo$str2=base_convert($str,16,2);
echo'<br>';
echobase_convert($str2,2,16);
[code]

字元串文件等可以考慮用pack和unpack轉化成二進制

[code=PHP]
$file1='F:/46.gif';//隨便拷一個圖片作為測試用
$file2='F:/test.txt';//生成的二進制流保存在這個文件里
$file3='F:/47.gif';//由二進制流還原成的文件

$size=filesize($file1);

echo'文件大小為:'.$size;
echo" <br>轉化為二進制...";

$content=file_get_contents($file1);
$content=bstr2bin($content);


$fp=fopen($file2,'w');
fwrite($fp,$content);
fclose($fp);

$size2=filesize($file2);

echo'轉化成二進制後文件大小為:'.$size2;

$content=bin2bstr($content);

$fp=fopen($file3,'w');
fwrite($fp,$content);
fclose($fp);


functionbin2bstr($input)
//Convertabinaryexpression(e.g.,"100111")intoabinary-string
{
if(!is_string($input))returnnull;//Sanitycheck

//Packintoastring
$input=str_split($input,4);
$str='';
foreach($inputas$v)
{
$str.=base_convert($v,2,16);
}

$str=pack('H*',$str);

return$str;
}

functionbstr2bin($input)
//Binaryrepresentationofabinary-string
{
if(!is_string($input))returnnull;//Sanitycheck

//Unpackasahexadecimalstring
$value=unpack('H*',$input);

//Outputbinaryrepresentation
$value=str_split($value[1],1);
$bin='';
foreach($valueas$v)
{
$b=str_pad(base_convert($v,16,2),4,'0',STR_PAD_LEFT);

$bin.=$b;
}

return$bin;
}

⑻ 關於php 接收二進制流轉換成圖片

比如此類名字叫做imageUpload.class.php
那麼首先是要引入該類文件用include("imageUpload.class.php");
第二步是實例化該類$inputimage = new imageUpload("input.jpg","./");
第三部是調用二進制轉換成圖片的方法了,$inputimage->stream2Image();

實例化該類需要傳兩個參數,第一個是需要保存的圖片名字,第二個是圖片保存路徑地址。

⑼ PHP如何判斷接收的是否為圖片二進制數據

該函數圖像格式將自動檢測,只要 PHP 支持:JPEG,PNG,GIF,WBMP 和 GD2。 返回值:成功則返回圖像資源,如果圖像格式不支持,數據不是認可的格式,或者圖像已損壞則返回 FALSE如果沒有GD庫可以使用下邊的方法: function check_img_by_source($source) { switch(bin2hex(substr($source,0,2))){ case 'ffd8' : return 'ffd9' === bin2hex(substr($source,-2)); case '8950' : return '6082' === bin2hex(substr($source,-2)); case '4749' : return '003b' === bin2hex(substr($source,-2)); default : return false;}}//測試var_mp(check_img_by_source(file_get_contents('11.gif'));大概是這個樣子的吧,只針對了jpg,png,gif做了判斷。。想加其他的按照以上規則增加即可。 不過上邊這個判斷不夠嚴謹,別人可以根據以上判斷規則構造一個假數據。

⑽ php如何將webservice返回的二進制流保存到本地圖片

前幾天 剛弄的 app提交圖片的介面,二進制那種比較麻煩,
讓app那端也用 瀏覽器那種方式提交過來,php正常接收就ok
然後返回地址、圖片屬性,(這邊不用保存到本地吧,app那端應該是保存到本地),多個的話循環一下也行,也不慢
最後app把多個圖片以及表情、內容什麼的提交過來 ,然後保存到資料庫 應該是 ok的 ,如果 單獨保存圖片 正則匹配一下!!!

閱讀全文

與php接收二進制流相關的資料

熱點內容
二次元表格編程 瀏覽:20
plc編程器保停 瀏覽:963
如何降低伺服器的內存佔用率 瀏覽:868
阿里雲伺服器是個什麼意思 瀏覽:817
國內最好的數控編程培訓學校 瀏覽:13
222乘104列是演算法 瀏覽:159
程序員溝通正確姿勢 瀏覽:969
魔玩app怎麼視頻推廣 瀏覽:960
程序員抽獎送禮 瀏覽:458
北京java程序員薪資 瀏覽:658
如何創建網路平台或者app 瀏覽:355
python隨機數生成控制概率 瀏覽:236
壓縮機並聯運行 瀏覽:899
兩位單片機 瀏覽:63
四川音樂類投檔線的演算法 瀏覽:650
建行app如何改轉賬卡 瀏覽:26
android開發升級 瀏覽:299
要火社區app進不去怎麼辦 瀏覽:826
安卓手機上的自定義功能怎麼用 瀏覽:230
方舟伺服器怎麼購買進去資格 瀏覽:44