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