doukenqiong0588 2016-10-07 23:49
浏览 46
已采纳

纠正在Apache上用PHP生成的KMZ文件的标头和配置

I've got a PHP page that composes a KMZ file for download. This KMZ contains a KML with a JPEG Overlay.

I assume that this file is correct because the KML can be opened by Google Earth without problem. This is the snippet that I use to generate KMZ from KML and JPEG Overlay:

$zip = new ZipArchive();

$tmp_file = tempnam('.','');
$zip->open($tmp_file, ZipArchive::CREATE);

$download_file = file_get_contents($kml);
$zip->addFromString(basename($kml),$download_file);

$download_file = file_get_contents($jpeg);
$zip->addFromString("files/".basename($jpeg),$download_file);

$zip->close();

header('Content-disposition: attachment; filename=test.kmz');
header('Content-Type: application/vnd.google-earth.kmz .kmz');
readfile($tmp_file);

The problem is that both in OS X and Windows the KMZ cannot be opened in Google Earth.

But if I unzip it in Windows, the resulting KML+JPEG are opened without problems.

In OSX, I can't unzip the KMZ because it results corrupted. I think that the problem could be in header or mime type.

Does someone have experience with this?

  • 写回答

1条回答 默认 最新

  • douzuan2814 2017-05-19 02:46
    关注

    KMZ has a standard format which compresses doc.kml file. All the kml string should be written in doc.kml file.In PHP, I would do

    $zip->addFromString("doc.kml", $kmlString);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部