我遇到了一個代碼,應該生成一個svg文件下載,而不保存在服務器本身的問題。我已經設法達到了一個點,其中有一些代碼在其中下載文件,但不是實際的$數據本身。發佈數據與jquery到php文件下載svg文件
因此,切除不必要的東西出來,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 i是空的。
在瀏覽器的「網絡訪問」窗口中,我注意到saveSVG.php出現兩次,並且在POST方法狀態設置爲OK並且$ data被正確回顯,而GET狀態設置爲'取消'我剛剛下載的文件(與空$數據ofc ..)
我只是不明白:) 有人能幫我理解爲什麼這不起作用嗎?
謝謝!看起來它會工作..有一天。我必須刪除.serialize()方法,因爲我試圖在我的$ data中發送原始svg標記,並且在渲染下載的文件時出現錯誤。我需要找出問題是否存在於我的svg標記中,或者是因爲刪除了.serialize()方法。爲什麼你首先添加了它? – user3125632
首先,serialize()不正確。我刪除它。 ;)如果你無法弄清楚,你的剩餘問題應該發佈在另一個問題上。 –
啊,好的:D Thx很多! – user3125632