Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 加载另一页时下载文件_Php_Javascript_Joomla_Download - Fatal编程技术网

Php 加载另一页时下载文件

Php 加载另一页时下载文件,php,javascript,joomla,download,Php,Javascript,Joomla,Download,背景是: 用户点击一个按钮 页面将使用页面上的新信息刷新(echo用于打印html代码) 将创建一个file.txt文件 应自动开始下载创建的文件 使用下面的代码,将创建文件并显示页面的其余部分,但不会开始下载。另外,如果我点击链接,下载不会开始,但txt文件会在浏览器中打开(同时我想强制下载) 另一方面,如果我对javascript进行注释并取消对页眉指令的注释,我会刷新正确的页面并下载txt文件,但该文件的内容是错误的(它包含在页面其余部分中回显的html代码) ==============

背景是:

  • 用户点击一个按钮
  • 页面将使用页面上的新信息刷新(echo用于打印html代码)
  • 将创建一个file.txt文件
  • 应自动开始下载创建的文件
  • 使用下面的代码,将创建文件并显示页面的其余部分,但不会开始下载。另外,如果我点击链接,下载不会开始,但txt文件会在浏览器中打开(同时我想强制下载)

    另一方面,如果我对javascript进行注释并取消对页眉指令的注释,我会刷新正确的页面并下载txt文件,但该文件的内容是错误的(它包含在页面其余部分中回显的html代码)

    =========================不工作代码==================

          echo "
          <form name=\"fn\" action=\"index.php?option=com_comp\" method=\"post\">
          // more not related stuff
          <input type=\"image\" src=\"".JURI::root().
          "components/com_comp/images/download_icon.png\" .
          "\" name=\"downloadaddresses\">DOWNLOAD_RESULTS
          // more not related stuff";
    
    
          if($_POST['downloadaddresses_x']!=0) {
    
                $myfilename = "tmp/results.txt";
                $fh = fopen($myfilename, 'w');
    
                $recipients = $_POST['recipients'];
                $semicolon_separated = implode(";", $recipients);
    
                fwrite($fh, $semicolon_separated);
                fclose($fh);
    
    
                /*header('Content-disposition: attachment; filename='.$myfilename);
                header("Content-type: application/octet-stream");*/
    
                echo "<a href=\"".$myfilename."\" id=\"downloadlink\">
                This download should start automatically!</a>";
                echo "<script type=\"text/javascript\">
                        newwindow=function{
                window.open('".$myfilename."','name','height=400,width=200');
                        if (window.focus) {newwindow.focus()}}
                    </script>";
            }           
    
    echo”
    //更多不相关的东西
    下载结果
    //更多不相关的东西”;
    如果($\u POST['downloaddresses\u x']!=0){
    $myfilename=“tmp/results.txt”;
    $fh=fopen($myfilename,'w');
    $recipients=$_POST['recipients'];
    $semicolon_separated=内爆(“;”,$recipients);
    fwrite($fh,$分号分隔);
    fclose($fh);
    /*标题('Content-disposition:attachment;filename='。$myfilename);
    标题(“内容类型:应用程序/八位字节流”)*/
    回声“;
    回声“
    newwindow=函数{
    window.open(““$myfilename.”,“'name','height=400,width=200”);
    if(window.focus){newwindow.focus()}
    ";
    }           
    
    ====================================================================================================================================================================================

        <script type="text/javascipt">  
        var el = document.getElementById('downloadlink');
        if (document.createEvent) {
            var event = document.createEvent(\"MouseEvents\");
            event.initEvent(\"click\", true, true);
            el.dispatchEvent(event);
        }
        else if (el.click) {
            el.click();
        }
        </script>
    
    
    var el=document.getElementById('downloadlink');
    if(document.createEvent){
    var event=document.createEvent(\“MouseEvents\”);
    initEvent(\“click\”,true,true);
    el.调度事件(事件);
    }
    else if(el.单击){
    el.click();
    }
    
    代替此
    单击
    模拟代码:

    <script type="text/javascipt">  
    var el = document.getElementById('downloadlink');
    if (document.createEvent) {
        var event = document.createEvent(\"MouseEvents\");
        event.initEvent(\"click\", true, true);
        el.dispatchEvent(event);
    }
    else if (el.click) {
        el.click();
    }
    </script>
    
    
    var el=document.getElementById('downloadlink');
    if(document.createEvent){
    var event=document.createEvent(\“MouseEvents\”);
    initEvent(\“click\”,true,true);
    el.调度事件(事件);
    }
    else if(el.单击){
    el.click();
    }
    
    你能用这个吗

    <script type="text/javascript">
        location.href = document.getElementById('downloadlink').getAttribute('href');
    </script>
    
    
    location.href=document.getElementById('downloadlink').getAttribute('href');
    
    请参见,只需执行此操作。生成文件后,只需给出如下内容:
    setTimeout(function(){location.href=document.getElementById('downloadlink').getAttribute('href');},1000)而不是点击事件欺骗。差不多了!我被重定向到URL:tmp/jselcom_results.txt,因此我看到的是这个页面,而不是下载它…只需给出
    标题('Content-disposition:attachment;filename='。$myfilename)
    好的,但是怎么做呢?我不知道该把它插在哪里。但是,如果我将格式更改为csv,例如,它可以工作。有没有办法让它与.txt一起工作?