我编写了一个脚本,在其中创建并保存一个CSV文件在我的服务器的目录中。CSV文件包含来自查询的属性。整个过程是使用Jquery和Ajax在单击按钮时执行的。
我现在想做的是能够在本地保存生成的CSV。我发现了类似的问题,但我还没有找到一个关于如何创建一个对话框的答案,这将提示客户端指定保存文件的位置。
这是我Jquery代码的一部分:
var nodeId = 'something';
var ajaxurl = 'requestsII/exportNodeData.php', // script to run
data = {nodeId:nodeId}; // data to pass
$.post(ajaxurl, data, function (response) {
//alert(response);
});
这是我的PHP脚本:
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv"); // EDITED
if ($db) {
$stmt = $db->prepare('SELECT kodpop AS "ΚΩΔΙΚΟΣ ΚΟΜΒΟΥ",itemcode AS "ΚΩΔΙΚΟΣ ΕΞΟΠΛΙΣΜΟΥ",temaxia AS "ΤΕΜΑΧΙΑ",status AS "STATUS" FROM bom WHERE type IN (:typeI, :typeII) AND kodpop = :nodeId');
$stmt->execute(array('typeI' =>$typeI,'typeII' => $typeII,'nodeId' => $nodeId));
#$results=$stmt->fetchAll(PDO::FETCH_OBJ);
#$json=json_encode($results);
#echo($json);
$filename = '/var/www/dkar/ruralBroadband/ruralApp/rural/csvExports/'.$nodeId.'.csv';
$data = fopen($filename, 'w');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}
fclose($data);
}
echo($data); // EDITED
问题是我如何在本地下载我在PHP脚本中创建的CSV文件?
试试这个代码
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo "record1,record2,record3'n";
Edit:
Try This code
if ($db)
{
$stmt = $db->prepare('SELECT kodpop AS "ΚΩΔΙΚΟΣ ΚΟΜΒΟΥ",itemcode AS "ΚΩΔΙΚΟΣ ΕΞΟΠΛΙΣΜΟΥ",temaxia AS "ΤΕΜΑΧΙΑ",status AS "STATUS" FROM bom WHERE type IN (:typeI, :typeII) AND kodpop = :nodeId');
$stmt->execute(array('typeI' =>$typeI,'typeII' => $typeII,'nodeId' => $nodeId));
#$results=$stmt->fetchAll(PDO::FETCH_OBJ);
#$json=json_encode($results);
#echo($json);
$filename = '/var/www/dkar/ruralBroadband/ruralApp/rural/csvExports/'.$nodeId.'.csv';
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=".$filename);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
}
毕竟我没有使用上面的方法,我这样做了,效果很好,而且更直接:
var ajaxurl = 'exportNodeData.php', // script to run
data = {nodeId:nodeId}; // data to pass
$.post(ajaxurl, data, function (response) {
document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip';
});
这是ajax请求,我执行它是为了创建CSV文件(它也是压缩的)。然后使用这一行:
document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip';