doukenqiong0588 2016-10-08 07: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 10: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);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用lstm来预测股票价格
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上