这就是我想要做的事情: 如果用户单击链接(或图像),则会动态创建文件,用户可以下载该文件。
一个想法是创建一个链接l(),它调用一个处理文件的菜单项。但是,该方法将创建一个新页面 - 这不是我想要的。我希望它向用户显示他们只是从文件列表中下载文件(如果他们愿意,他们可以转到下一个文件链接)
这个问题在drupal论坛上被问到没有答案: http://drupal.org/node/427866
我认为这是一个简单的命题,但还没有答案。
谢谢!
答案 0 :(得分:0)
我不了解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;
}