查询php mvc后强制下载文件

时间:2013-06-19 06:38:18

标签: php download

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

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

注意:我已经在其他论坛以及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
           }
      }
}

}

上面的代码没有产生错误,在我创建的路径上创建的文件 问题是&#34;没有保存为&#34;或者其他什么,浏览器不下载文件。当我使用httpfox查看标题等等时,查询的结果显示在httpfox内容选项卡上,所以除了我希望浏览器显示下载文件(另存为对话框)以便用户显示错误可以将它保存到那里硬盘..

注意2#:当我创建像Download这样的下载链接时,当我点击下载链接时,该页面会将我返回到主页面而根本没有下载。

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

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

0 个答案:

没有答案