最近在搞一个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. iOS开发——高级技术&调用地图功能的实现

    调用地图功能的实现 一:苹果自带地图 学习如逆水行舟,不进则退.古人告诉我们要不断的反思和总结,日思则日精,月思则月精,年思则年精.只有不断的尝试和总结,才能让我们的工作和生活更加 轻松愉快和美好.连 ...

  2. Command模式

    Command模式只是封装了一个没有任何变量的函数. interface Command{ void Excute();} 具有强烈的分解功能的味道.把函数层面的任务提升到了类的层面(一个类仅仅是为了 ...

  3. 用非管理员权限启动主程序,并用管理员权限启动子程序,导致WM_COPYDATA消息发送失败的问题

    问题描述 :     用非管理员权限启动dzh,dzh再启动dtssm,由于dtssm的配置文件app.manifest 中设置了requireAdministrator,导致dtssm总是以管理员权 ...

  4. android: SharedPreferences实现记住密码功能

    既然是实现记住密码的功能,那么我们就不需要从头去写了,因为在上一章中的最佳实 践部分已经编写过一个登录界面了,有可以重用的代码为什么不用呢?那就首先打开 BroadcastBestPractice 项 ...

  5. 我用了13行代碼開發出来的PHP框架

    我只用13行代碼開發的PHP框架,如果您對框架不理解,不知道框架究竟幫您做了什麽事,可以下載此框架看一下, 另外如果您想開發自己的框架也可以由這個框架的思路進行擴展. 源碼下載地址:http://do ...

  6. Cocos2d中使用颜色混合:加算,减算

    转自http://blog.sina.com.cn/s/blog_7a2ffd5c0100xtid.html CCSprite有一个ccBlendFunc类型的blendFunc_结构体成员,可以用来 ...

  7. CDN技术分享

    CDN技术分享目录 网络应用服务发展 CDN技术 1.CDN是什么?为什么我们需要它?(简介) 2.CDN能做什么?(作用) 3.CDN是如何工作?(原理) 4.CDN有那些具体应用?(应用) 我们项 ...

  8. JavaScript过滤除连续的数字

    if (!Array.prototype.forEach) { Array.prototype.forEach = function (callback, thisArg) { var T, k; i ...

  9. ASP.NET 4.5 和 Visual Studio 2012 中的新功能

    原文地址:http://www.asp.net/aspnet/overview/aspnet-and-visual-studio-2012/whats-new#_Toc318097372

  10. linux red hat 安装svn

    安装步骤如下: 1.yum install subversion   2.输入rpm -ql subversion查看安装位置,如下图:   我们知道svn在bin目录下生成了几个二进制文件. 输入 ...