【发布时间】:2014-01-10 08:43:56
【问题描述】:
我遇到了一个代码问题,该代码应该生成一个 svg 文件以供下载,而不是在服务器本身上保存一个。我已经设法下载了包含一些代码的文件,但不是实际的 $data 本身。
所以,去掉不必要的东西,html按钮启动javascript...
<button type="button" onclick="toSVG()">Save SVG</button>
将准备好的数据发布到 php 文件...
var data = $svgDiv.html();
$.post('./saveSVG.php',
{'data': data},
function(data){
window.location = 'saveSVG.php';
}
);
应该将 diagram.svg 保存到硬盘..
<?php
$data = $_POST['data'];
$file = "diagram.svg";
header('Content-type: image/svg+xml');
header("Content-Disposition: attachment; filename=$file");
echo('<?xml version="1.0" encoding="iso-8859-1"?>' . "\n");
echo('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN" "http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">' . "\n");
echo $data; ?>
但下载的 diagram.svg 只包含前两个回显,并且 $data 为空。
在浏览器的“网络访问”窗口中,我注意到 saveSVG.php 出现了两次,并且在 POST 方法中,状态设置为 OK 并且 $data 正确回显,而在 GET 中,状态设置为“已取消”,即使我'刚刚下载了文件(带有空的 $data ofc..)
我只是不明白 :) 有人可以帮我理解为什么这不起作用吗?
【问题讨论】: