Ⅰ php裡面如何取文件(可安全用於二進制文件)
可以使用文件函數fread
Ⅱ php中如何把一個文本內容保存成一個二進制文件
用fopen($filename,"w")或fopen($filename,"w+"),具體用法你看一下php手冊,寫得很明白,不太難
Ⅲ 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);
}
Ⅳ php+mysql 輸出二進制文件
這個錯誤是因為你沒有設置layout,所以zend會找默認的layout也就是layout.Phtml,解決辦法,在你的入口文件寫:
//設置layout路徑
Zend_Layout::startMVC(array('layoutPath'=>'./application/moles/Default/views/layout/','layout'=>'default'));
layoutPath是你的布局的路徑,layout是你的布局文件名稱。
Ⅳ php如何讀取二進制文件
你好,試試我這個行不行。
$buf = bin2hex(fread($hanle,filesize($nom_rep)));
您也可以向我們團隊發出請求,會有更專業的人來為您解答。
如果我的回答沒能幫助您,請繼續追問。
Ⅵ PHP關於獲取二進制數據流轉換為文件的方法
file_put_contents此函數可以安全用於二進制對象
Ⅶ 急求php中如何存取二進制文件(如AutoCAD圖)分不夠就加!!!
<?php
$user='root';
$password='root';
$db='test';
$connect=mysql_connect('localhost',$user,$password);
mysql_set_charset('utf8',$connect);
mysql_select_db($db);
$photo = "0x".bin2hex(file_get_contents("./test.jpg"));
$sql="INSERT INTO `test`.`test` (`photo`) VALUES ($photo);";//$photo不需要用引號,切記
mysql_query($sql);
//$result=mysql_query("SELECT *
//FROM `test`
//LIMIT 0 , 30");
//$img=mysql_fetch_array($result);
//echo $img['photo'];
?>
Ⅷ php中怎麼實現文件下載功能
兩種方法:
1.直接做個超鏈接,地址為文件的地址
<ahref="文件地址">下載</a>2.流輸出
<?php
$file=fopen('文件地址',"r");
header("Content-Type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".filesize('文件地址'));
header("Content-Disposition:attachment;filename=文件名稱");
echofread($file,filesize('文件地址'));
fclose($file);
?>推薦第二種
因為第一種方法只能下載瀏覽器不能解析的文件,比如rar啊,腳本文件之類。如果文件是圖片或者txt文檔,就會直接在瀏覽器中打開。
而第二種方法是直接輸出的文件流,不存在上述問題。
你可以檢查一下你傳值過來的路徑是否正確,還有,流輸出後面不要再進行任何操作了。
拓展資料:
集成開發環境是一種集成了軟體開發過程中所需主要工具的集成開發環境,其功能包括但不僅限於代碼高亮、代碼補全、調試、構建、版本控制等。一些常見的PHP IDEs如下:
Zend Studio:商業版,Zend官方出品,基於eclipse
Eclipsewith PDT:免費
Coda:商業版,針對Mac用戶
NetBeans:免費,功能強大
PHP Storm:商業版
AptanaStudio:免費
PhpEd:商業版
KomodoIDE/Edit:IDE為商業版,Edit可免費使用
Adobe Dreamweaver:商業版
除去集成開發環境,具備代碼高亮功能的常見文本編輯器因其輕巧靈活也常被選作開發工具,例如:Notepad++、Editplus、SublimeText、Everedit(國人開發)等等。
PHP的特性包括:
1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,
PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3. PHP支持幾乎所有流行的資料庫以及操作系統。
4. 最重要的是PHP可以用C、C++進行程序的擴展!
參考資料:網路:PHP
Ⅸ 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;
}