从 Safari 或 Chrome 下载时,该文件会正确下载并分配文件名和扩展名。我能够在 excel 中打开文件,因为操作系统能够检测并将 excel 指定为默认程序。但是当使用Firefox下载时,该文件没有正确的文件名或分配给它的扩展名。但是,下载文件后,用于正确打开文件的对话框默认为 excel,因为它能够识别文件类型。由于该文件没有分配正确的扩展名,因此当我导航到下载然后尝试打开文件时,它会以文本编辑打开。
以下是在 PHP 中在标头中分配文件名和扩展名的代码:
header('Content-type: application/vnd.openxmlformats- officedocument.spreadsheetml.sheet; charset=utf-8');
header('Content-disposition: attachment; filename='somefile.xlsx');
我可能错过了什么?我使用了以下内容作为参考:MIME 类型列表不完整
类似问题的另一个实例
你的行甚至不应该运行,因为有一个错误的单引号:
header('Content-disposition: attachment; filename='somefile.xlsx');
你根本不想引用filename=
的价值。试试这个:
header('Content-disposition: attachment; filename=somefile.xlsx');
文件名参数要么不加引号,要么用双引号引起来。当它包含 HTTP 令牌 ABNF 之外的字符(例如,空格、某些分隔符和非 ASCII(时,它需要引用。
RFC 6266 (https://greenbytes.de/tech/webdav/rfc6266.html( 中的更多信息