最近在搞一個livezilla的在線客服聊天的東東,客戶界面要求添加一個下載聊天記錄的功能。因而我就是翻看了下網上的各類關於」js保存文件至本地「的資料,發現只能在IE下經過execCommand實現。因而又是一番折騰啊。言歸正傳,下面開始上正餐。javascript
html標籤php
<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函數html
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的新建文件和讀取文件。要是你須要直接下載的話,請查看第二種方式。java
php代碼app
<?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; ?>