我被当前网页的第一个程序员留下的代码卡住了。他创建了自己的自定义框架。
我的问题是我创建了一个文件导出功能,因为有一个功能我应该将查询导出到文本文件,以便客户端/用户通过强制浏览器下载生成的文件来自动下载它:这是我的强制下载代码。
注意:我已经在其他论坛以及 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
时,当我点击下载链接时,页面将我返回到主页并且根本没有下载。
请给我一个关于如何处理这些东西的脚本或建议。先感谢您。如果我在这里遗漏了什么,请告诉我。
糟糕忘了告诉你,我所在的网站不允许外部访问文件以确保安全,这就是为什么我无法将导出文件链接到其他页面以供下载。:)