gpt4 book ai didi

php - Webkit 和 Excel 文件(PHPexcel)

转载 作者:行者123 更新时间:2023-12-04 21:41:59 24 4
gpt4 key购买 nike

我有一个可以下载的 excel 文件。例如 NAME.xlsx 它在 Firefox 中运行良好,但在 webkit(safari/chrome) 中它也附加到名称 扩展名 .xhtml 所以然后将其命名为 NAME.xlsx.html 它应该是 仅 .xlsx

这里有我的标题:

            $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

$objWriter->save($root.'/application/to_excel/KSW.xlsx');
$this->getResponse()->setHeader('Content-type', 'application/download', true);
$this->getResponse()->setHeader('Content-type', 'application/octet-stream', true);
$this->getResponse()->setHeader('Content-type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', true);
$this->getResponse()->setHeader('Content-disposition', 'attachment;filename='.basename($root.'/application/to_excel/KSW.xlsx').'', true);
$this->getResponse()->setHeader('Cache-Control', 'max-age=0', true);

那么我做错了什么?

最佳答案

我还没有让这个功能失败——它适用于我迄今为止在 Safari (Windows) 和 Chrome 中尝试过的所有 Office 2007/2010 文件。 get_known_mime_types() 函数只返回一个巨大的数组,其中包含我的应用程序支持的所有 mime 类型 - 只需 Google 即可获得您需要的 MIME 类型。 $file是主机上文件的实际路径,$name是显示在下载(运行/保存)对话框中的文件名。我也对我从中获得大部分信息的地方给予了应有的赞扬。希望你也有好运:

function file_download($file, $name, $mime_type='') {
/* The majority of this code was taken from:
* http://w-shadow.com/blog/2007/08/12/how-to-force-file-download-with-php/
*
* So a big thanks to them.
* I have modified parts of it, though, so it's not 100% borrowed.
*/

if(!is_readable($file)) die('File not found or inaccessible!');

$size = filesize($file);
$name = rawurldecode($name);

/* Figure out the MIME type (if not specified) */
$known_mime_types = get_known_mime_types();

if($mime_type==''){
$file_extension = strtolower(substr(strrchr($file,"."),1));

if(array_key_exists($file_extension, $known_mime_types)){
$mime_type=$known_mime_types[$file_extension];
} else {
$mime_type="application/force-download";
}
}

@ob_end_clean(); //turn off output buffering to decrease cpu usage

// required for IE, otherwise Content-Disposition may be ignored
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off');
}

header('Content-Type: ' . $mime_type);
header('Content-Disposition: attachment; filename="'.$name.'"');
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');

/* The three lines below basically make the download non-cacheable */
header("Cache-control: private");
header('Pragma: private');
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// multipart-download and download resuming support
if(isset($_SERVER['HTTP_RANGE'])) {
list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2);
list($range) = explode(",",$range,2);
list($range, $range_end) = explode("-", $range);
$range=intval($range);

if(!$range_end) {
$range_end=$size-1;
} else {
$range_end=intval($range_end);
}

$new_length = $range_end-$range+1;

header("HTTP/1.1 206 Partial Content");
header("Content-Length: $new_length");
header("Content-Range: bytes $range-$range_end/$size");
} else {
$new_length=$size;
header("Content-Length: ".$size);
}

/* output the file itself */
$chunksize = 1*(1024*1024); // 1MB, can be tweaked if needed
$bytes_send = 0;

if ($file = fopen($file, 'r')) {
if(isset($_SERVER['HTTP_RANGE'])) {
fseek($file, $range);
}

while(!feof($file) && (!connection_aborted()) && ($bytes_send<$new_length)) {
$buffer = fread($file, $chunksize);
print($buffer); //echo($buffer); // is also possible
flush();
$bytes_send += strlen($buffer);
}

fclose($file);
} else {
die('Error - can not open file.');
}

die();
}

关于php - Webkit 和 Excel 文件(PHPexcel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3019068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com