首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP xlsx报头

PHP xlsx报头
EN

Stack Overflow用户
提问于 2012-04-17 20:21:16
回答 4查看 75.6K关注 0票数 8

因此,这是可行的:

myphpfile.php:

代码语言:javascript
复制
<?php
header('Content-disposition: attachment; filename=myfile.pdf');
header('Content-type: application/pdf');
readfile('myfile.pdf');
?> 

这个php文件在这里被调用,PDF下载工作得很好:

代码语言:javascript
复制
<a class = "oglasavanje" href = "../../cjenik/myphpfile.php">download</a><br/>

但这不管用:

代码语言:javascript
复制
<?php
header('Content-disposition: attachment; filename=myfile.xlsx');
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
readfile('myfile.xlsx');
?>

.pdf和.xlsx文件都位于同一个文件夹中。当我点击‘下载’链接下载窗口弹出,我保存文件,但文件不能打开。它给出了以下错误:

由于文件格式或文件扩展名无效,

Excel无法打开文件“myfile.xlsx”。验证文件没有损坏,并且文件扩展名是否与文件的格式匹配。

当我手动打开该文件时,它会很好地打开(即不通过链接下载)。

我在用WAMP,如果这很重要的话。

任何帮助都是非常感谢的。

编辑

我在php.net上找到了这段代码:

代码语言:javascript
复制
ob_clean();
flush();

所以最后的代码看起来是这样的,它起作用了:

代码语言:javascript
复制
$file = "myfile.xlsx";
header('Content-disposition: attachment; filename='.$file);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush(); 
readfile($file);

谢谢大家的回答。

EN

回答 4

Stack Overflow用户

发布于 2012-04-17 20:39:32

取决于您的浏览器,所以很多事情都会导致这样的行为,如Content-lengthCache-Control等。

也变了

Content-typeContent-Type

Content-dispositionContent-Disposition

试一试

代码语言:javascript
复制
$file = "myfile.xlsx" ;
header('Content-Disposition: attachment; filename=' . $file );
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile('myfile.xlsx');
票数 7
EN

Stack Overflow用户

发布于 2012-04-17 20:28:04

取决于您的web浏览器,文件名可能不完全保存与句点。如果文件名不完整,可以尝试替换此标题:

代码语言:javascript
复制
header('Content-disposition: attachment; filename=myfile.xlsx');

使用

代码语言:javascript
复制
$filename = "myfile.xlsx";
header('Content-Disposition: attachment; filename="' . $filename . '"');
票数 2
EN

Stack Overflow用户

发布于 2016-02-04 15:14:36

代码语言:javascript
复制
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filename);
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($filename));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
readfile($filename);
return;

这个解决方案对我有效,但是当我试图打开下载的文件时,我会得到一个错误。因为.pdf文件只是空的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10198524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档