0

我被当前网页的第一个程序员留下的代码卡住了。他创建了自己的自定义框架。

我的问题是我创建了一个文件导出功能,因为有一个功能我应该将查询导出到文本文件,以便客户端/用户通过强制浏览器下载生成的文件来自动下载它:这是我的强制下载代码。

注意:我已经在其他论坛以及 Stackoverflow 上搜索过,但找不到答案。这是我当前的代码:

if(!defined('APPLICATION_RUNNING')){
    header("HTTP/1.0 404 Not Found");
    die('acces denied');
}

if(defined('ANNOUNCE')){
    echo "\n<!-- loaded: ".__FILE__." -->\n";
}

if(!class_exists('APP_Ajax')){

class APP_Ajax extends APP_Base_Ajax
{
    function textfiles()
    {
        global $apptemplate, $appform, $appdb;

        if(!$appform->form_valid($this->post['formid'])) // if not b\valid form
        {
            json_return_error(5);
        }
        else
        {
            if(!empty($this->post['form'])) //if the post of form is not empty
            {
                $e = array();                   
            }
            else
            {
                json_return_error(6);//alert if form is empty
            }

            if(empty($this->post['form']['rowid']))
            {
                json_return_error(252); // if rowid is empty then raise error
            }
            else
            {           
                $rets = $this->post['form']['rowid'];
                $ids = explode(',',$rets);

                foreach ($ids as $kids)
                {
                    $sql = pg_query("SELECT * from tbl_patient WHERE id='$kids'");
                    $info = pg_fetch_assoc($sql);
                    $text[]  = ucwords($info['firstname']." ".$info['mi']." ".$info['lastname']).",".$info['medicalrecordnumber'].",".$info['referraldate'];
                }

                $output = implode( "\r\n" , $text );
                $randfile = rand(12345689,999999999)."_".date('m-d-Y');

                $f = fopen("templates/default/exports/".$randfile.".txt", "w");
                fwrite($f, $output);
                fclose($f);

                $file_name = ABS_PATH.'templates/default/exports/'.$randfile.'.txt';

                header('Pragma: public');   // required
                header('Expires: 0');// no cache
                header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                header('Last-Modified: '.gmdate ('D, d M Y H:i:s', filemtime ($file_name)).' GMT');
                header('Cache-Control: private',false);
                header('Content-Type: text/plain');
                header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
                header('Content-Transfer-Encoding: binary');
                header('Content-Length: '.filesize($file_name));
                header('Connection: close');

                readfile($file_name);// push it out
           }
      }
}

}

上面的代码没有产生错误,在我创建的路径上创建的文件,但问题是“没有另存为”之类的,浏览器不下载文件。当我使用 httpfox 查看标题等时,查询结果显示在 httpfox 内容选项卡上,因此代码没有问题,只是我希望浏览器显示下载文件(另存为对话框)以便用户可以保存到那里硬盘驱动器..

注意2#:当我创建一个下载链接Download时,当我点击下载链接时,页面将我返回到主页并且根本没有下载。

请给我一个关于如何处理这些东西的脚本或建议。先感谢您。如果我在这里遗漏了什么,请告诉我。

糟糕忘了告诉你,我所在的网站不允许外部访问文件以确保安全,这就是为什么我无法将导出文件链接到其他页面以供下载。:)

4

0 回答 0