简单的方法使链接提示“另存为”

时间:2011-12-06 13:51:05

标签: php javascript html css

是否有一种快速内联方式,在第一次初次点击后,让我的一些链接提示“将文件另存为”(右键单击同一屏幕)?

2 个答案:

答案 0 :(得分:2)

您只需要发送适当的标头即可。 Content-Disposition是关键(见http://en.wikipedia.org/wiki/MIME)。

请参阅下面的PHP示例。

/**
 * @author Gajus Kuizinas <g.kuizinas@anuary.com>
 * @copyright Anuary Ltd, http://anuary.com
 * @version 1.0.1 (2011 11 18)
 */
function ay_file_force_download($file, $file_name = NULL)
{
    if(headers_sent())
    {
        throw new Ay_Exception('Headers have been already sent. Cannot force file download.');
    }

    $file_name  = $file_name === NULL ? basename($file) : $file_name;

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . $file_name);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);

    exit;
}

答案 1 :(得分:0)

在php端真正需要的是将Content-Disposition标题设置为附件,如header('Content-Disposition: attachment; filename=name-of-file');中所示。如果您必须或想要在客户端进行此操作,浏览器将自动尝试下载大量文档类型,因此您只需提供直接链接即可。显然,这不是为你而发生的,所以当然不可靠。