最近在搞一个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;
?>

php中关于js保存文件至本地的问题的更多相关文章

  1. jQuery或者js保存文件到本地

    一: // 浏览文件夹(指定文件路径) function BrowseFolder() { try { var Message = "Please select the folder pat ...

  2. c# 通过地址下载流然后保存文件到本地

    1.下载文件并保存文件到本地 private void GetFileFromNetUrl(string url) { try { System.Net.WebRequest req = System ...

  3. 部署springboot项目时 打包成jar时包中html,js,css文件缺失

    问题 打包出来的jar包里面没有html,js,css文件 解决方案 在pom.xml文件下的build选项中的src/main/resources的目录下 添加配置 <build> &l ...

  4. flask保存 文件到本地

    本篇队长介绍一下如何 把前端上传的文件保存 到 后端flask项目目录 首先讲一下上传.保存文件的思路: 第一步:前端通过post请求方式提交上传的文件 <input id="file ...

  5. Eclipse中使用GIT提交文件至本地

    GIT提交文件至本地: 1.  右击项目——Team——Commit…: 2.在弹出的Commit Changes框中——选择要提交的文件——填写提交说明——点击Commit,即可提交至本地.

  6. Js下载文件到本地(兼容多浏览器)

    在客户端通过js下载文件,试过几种下载方式,iframe方式仅限于IE浏览器,window.open(url),location.href=url 这两种方式在chrome浏览器还会是直接打开文件而不 ...

  7. [JavaScript] js实现保存文件到本地

    function fake_click(obj) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent ...

  8. MVC 中如果js,css文件放到视图文件夹无法访问的解决办法

    在视图配置文件web.config 中添加如下节点,注意:此web.config 是视图文件夹中的,在你的views视图中可以找到<system.webServer>开头的<hand ...

  9. java导出excel并且压缩成zip上传到oss,并下载,使用字节流去存储,不用文件流保存文件到本地

    最近项目上要求实现导出excel并根据条数做分割,然后将分割后的多个excel打包成压缩包上传到oss服务器上,然后提供下载方法,具体代码如下:这里只展示部分代码,获取数据的代码就不展示了 ByteA ...

随机推荐

  1. atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException

    atitit.解决struts2 SpringObjectFactory.getClassInstance NullPointerException #--现象 java.lang.NullPoint ...

  2. vbscript调用WMI一键式式发布网站

    作为.net开发,在window环境下,不得不熟悉些脚本语言,来减轻些日常开发中所遇到的一些繁杂的事情,比如自动发布网站,自动发布网站等等. WMI windows管理程序接口,可用各种与语言调用,方 ...

  3. 如何安装、配置Apache

    Apache的安装流程网上版本很多,但很多版本有错误,或者缺漏,如果初学者按照那样安装的话会遇到各种各样的问题.我整理了自己安装.配置Apache的过程,亲测有效,分享给大家. 基本过程如下: Dow ...

  4. 使用Jsoup 爬取网易首页所有的图片

    package com.enation.newtest; import java.io.File; import java.io.FileNotFoundException; import java. ...

  5. C#程序中注释过多的8条理由

    程序中中的注释,一般是有益处的,可以知晓程序的一些逻辑说明,或是参数解释.但是有些程序,因为注释太多,反而引起维护上的不方便,删掉了怕以后不能出现问题不好查找原因,不删除留在代码中,对程序的维护人员, ...

  6. jquery scrollLeft居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 图像拼接 SIFT资料合集

    转自 http://blog.csdn.net/stellar0/article/details/8741780 分类: 最近也注意一些图像拼接方面的文章,很多很多,尤其是全景图拼接的,实际上类似佳能 ...

  8. 替换GitBlit的证书为域证书

    GitBlit(当前版本1.6.2,http://gitblit.org/) 是一个Git版本控制的服务端,使用java编写,功能上足够满足基本的版本控制要求,而且部署很简单方便,比如windows上 ...

  9. Spring3系列4-多个配置文件的整合

    Spring3系列4-多个配置文件的整合 在大型的Spring3项目中,所有的Bean配置在一个配置文件中不易管理,也不利于团队开发,通常在开发过程中,我们会按照功能模块的不同,或者开发人员的不同,将 ...

  10. WebApi中直接返回json字符串的方法

    [HttpPost] public HttpResponseMessage Upload() { string json = "{\"result\":\"tr ...