Drupal-从链接调用函数,但不';不要创建新页面

Drupal-从链接调用函数,但不';不要创建新页面,drupal,drupal-7,Drupal,Drupal 7,以下是我想做的: 如果用户单击链接(或图像),则会动态创建一个文件,用户可以下载该文件 一个想法是创建一个链接l(),该链接调用处理该文件的菜单项。但是,该方法将创建一个新页面-这不是我想要的。我想让用户觉得他们只是从文件列表中下载了一个文件(如果愿意,他们可以转到下一个文件链接) 这个问题在drupal论坛上被问到,但没有回答: 我认为这是一个简单的命题,但还没有答案 谢谢 我不了解HTML的头文件,但这里的基本思想是更改头文件,并遵循一个文件供用户下载 链接(您想要的任何东西,可以链接到函

以下是我想做的: 如果用户单击链接(或图像),则会动态创建一个文件,用户可以下载该文件

一个想法是创建一个链接l(),该链接调用处理该文件的菜单项。但是,该方法将创建一个新页面-这不是我想要的。我想让用户觉得他们只是从文件列表中下载了一个文件(如果愿意,他们可以转到下一个文件链接)

这个问题在drupal论坛上被问到,但没有回答:

我认为这是一个简单的命题,但还没有答案


谢谢

我不了解HTML的头文件,但这里的基本思想是更改头文件,并遵循一个文件供用户下载

链接(您想要的任何东西,可以链接到函数,或者使用l())将导致执行某个函数;在该函数中,它将调用php函数header(),在drupal执行任何操作之前将适当的头返回到浏览器,然后返回希望用户下载的文件;然后,调用die()函数来完成执行

到浏览器,它将开始下载文件。但是对于需要放在header()函数中的内容,我也不太确定,您可以进一步搜索它

更新:以下是我用来提供excel可读文件供用户下载的代码:

function download_as_excel($header, $rows, $filename = 'result.xls',$pre_content = "",$post_content = "")
{
    //Export the table to MS Excel.
    header('Content-type: application/vnd.ms-excel; charset=UTF-8');
    header('Content-Disposition: attachment; filename="'.$filename.'"');
    $output = '<html>';
    $output .= '<head><meta http-equiv=Content-Type content="text/html; charset=utf-8"></head>';
    $output .= '<body>';
  $output .= $pre_content;
    $output .= theme('table', array('header' => $header, 'rows' => $rows));
  $output .= $post_content;
    $output .= "</body></html>";
    print $output;
    exit;
}
function download_as_excel($header、$rows、$filename='result.xls'、$pre_content=“”、$post_content=“”)
{
//将表格导出到MS Excel。
标题('Content-type:application/vnd.ms-excel;charset=UTF-8');
标题('Content-Disposition:attachment;filename=“.”.$filename.'”);
$output='';
$output.='';
$output.='';
$output.=$pre_内容;
$output.=theme('table',array('header'=>$header,'rows'=>$rows));
$output.=$post\u内容;
$output.=“”;
打印$输出;
出口
}

你能更具体一点吗?嗯。。。如果链接之前的位置被确定了,这能起作用吗?你会回到最后一页吗?是否应使用标题(“位置:…”)?或者标题(“内容处置:附件;”)?我已经更新了我的注释,以包含我们用作示例的代码;由于浏览器已将下载文件作为从链接返回的内容,因此之后不会将其重定向到另一个页面(意思是:保持在同一页面中),这样就可以了!哇!谢谢我只能使用以下命令,请参阅我的回复打印$output;我无法使用任何html输出,例如:“”;因为它在文本文件中结束了。我只能使用以下内容,而且效果很好:header('Content-type:application/vnd.ms-excel;charset=UTF-8');标题('Content-Disposition:attachment;filename=“.”.$filename.'”)$输出=$内容;