是否有一种快速内联方式,在第一次初次点击后,让我的一些链接提示“将文件另存为”(右键单击同一屏幕)?
答案 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');
中所示。如果您必须或想要在客户端进行此操作,浏览器将自动尝试下载大量文档类型,因此您只需提供直接链接即可。显然,这不是为你而发生的,所以当然不可靠。