zoukankan      html  css  js  c++  java
  • 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;
    ?>
  • 相关阅读:
    bootstrap如何设置每一个选项卡对应一个页面
    SpringBoot集成百度UEditor图片上传后直接访问404解决办法
    从0开始完成SpringBoot+Mybatis实现增删改查
    Luarocks 安装艰难过程
    [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)')))
    python + selenium 搭建环境步骤
    mongodb的安装
    git-新建git用户流程-1
    git-关联远程git仓库详细步骤-2
    Django启动服务的流程
  • 原文地址:https://www.cnblogs.com/fuge/p/4262300.html
Copyright © 2011-2022 走看看