0

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

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

这个问题已在 drupal 论坛上提出,但没有答案: http ://drupal.org/node/427866

我认为这是一个简单的提议,但还没有答案。

谢谢!

4

1 回答 1

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;
}
于 2012-06-06T17:37:39.507 回答