php中關於js保存文件至本地的問題


最近在搞一個livezilla的在線客服聊天的東東,客戶界面要求添加一個下載聊天記錄的功能。於是我就是翻看了下網上的各種關於”js保存文件至本地“的資料,發現只能在IE下通過execCommand實現。於是又是一番折騰啊。言歸正傳,下面開始上正餐。

html標簽

<td <!--FU_HIDDEN-->><a id="download"   target="_blank" ><img class="lz_chat_clickable_image" onclick="top.savefile();" src="./images/button_file.gif" border="0" title="<!--lang_client_save_file-->" alt="<!--lang_client_save_file-->"></a></td>

js函數

function savefile()
{
	var result='';
	var iframe = window.frames["lz_chat_frame.3.2"];
	var chatframe =iframe.document.all["lz_chat_frame.3.2.chat.4.0"].contentWindow.document;
	var topframe=iframe.document.all["lz_chat_frame.3.2.chat.0.0"].contentWindow.document;
	//text是從頁面上獲取到的聊天信息
	var text = chatframe.getElementById('lz_chat_main').innerText;
	//對標簽添加連接屬性及其值
	topframe.getElementById('download').setAttribute("href","./chatnote.php?data="+text);
}
    

方式一:通過一個a標簽,已get方式將數據傳到服務端,然后服務端新建文件,保存傳過來的內容,然后讀取文件內容,最近進行下載操作。此方式主要是為了我熟悉一下php的新建文件和讀取文件。要是你需要直接下載的話,請查看第二種方式。

php代碼

<?php 

 $dirname = date('Ymd',time());
 $filename =date('YmdHis',time());
 //在chatrecord目錄下創建命名為當前日期的文件夾
 $filepath = "chatrecord/".$dirname;
mk_dir($filepath); 
// 循環創建目錄 
function mk_dir($dir, $mode = 0755) 
{ 
if (is_dir($dir) || @mkdir($dir,$mode)) return true; 
if (!mk_dir(dirname($dir),$mode)) return false; 
return @mkdir($dir,$mode); 
} 
//獲取內容
header('Content-Type:text/html; charset=utf-8');
$backValue=$_GET['data'];       
$filename = 'chatrecord/'.$dirname.'/'.$filename.'.txt';
//將內容寫入文件
$myfile = fopen($filename, "w") or die("Unable to open file!");
fwrite($myfile, $backValue);
fclose($myfile);
$filesize   =   filesize($filename);
$now =date('His',time());
$downfilename ='客服記錄'.$now.'.txt';//下載的文件名
header( "Content-Type:   application/force-download ");
header( "Content-Disposition:   attachment;   filename=".$downfilename);
header( "Content-Length:   ".$filesize);
$data   =  file_get_contents($filename);//獲取文件內容
echo   $data;

?>

方式二:不在服務端保存文件,直接下載文件

<?php 
//獲取內容
header('Content-Type:text/html; charset=utf-8');
$backValue=$_GET['data'];       
$now =date('His',time());
$downfilename ='客服記錄'.$now.'.txt';//下載的文件名
header( "Content-Type:   application/force-download ");
header( "Content-Disposition:   attachment;   filename=".$downfilename);
$data   =  $backValue;//獲取文件內容
echo   $data;
?>

 


免責聲明!

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



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