[英]How to make file download instead of saving on server?
$filename = "PM.xls";
$exists = file_exists('PM.xls');
if($exists)
{
unlink($filename);
}
$filename = "PM.xls";
$fp = fopen($filename, "wb");
$sql = "SELECT DATE_FORMAT(jobcard.Open_date_time,' %d-%b-%y') AS datee,vehicles_data.Frame_no, jobcard.Jobc_id,jobcard.serv_nature,jobcard.Customer_name,jobc_invoice.Lnet, jobc_invoice.Pnet, jobc_invoice.Snet, jobcard.Mileage,customer_data.cust_type,vehicles_data.model_year,jobcard.Veh_reg_no,jobcard.comp_appointed, customer_data.mobile,IF(variant_codes.Make IS NULL,'Others',variant_codes.Make) as make FROM `jobcard` LEFT OUTER JOIN jobc_invoice ON jobcard.Jobc_id=jobc_invoice.Jobc_id LEFT OUTER JOIN vehicles_data ON jobcard.Vehicle_id=vehicles_data.Vehicle_id LEFT OUTER JOIN variant_codes ON vehicles_data.Model=variant_codes.Model LEFT OUTER JOIN customer_data ON jobcard.Customer_id=customer_data.Customer_id ORDER BY `make` ASC";
$result=mysqli_query($conn,$sql) or die(mysqli_error($sql));
$schema_insert = "";
$schema_insert_rows = "";
while($row = mysqli_fetch_row($result))
{
$insert = $row[0]. "\t" .$row[1]. "\t".$row[2]. "\t".$row[3]. "\t".$row[4]. "\t".$row[5]. "\t".$row[6]. "\t".$row[7]. "\t".$row[8]. "\t".$row[9]. "\t".$row[10]. "\t".$row[11]. "\t".$row[12]. "\t".$row[13]. "\t".$row[14]. "\t".$row[15];
$insert .= "\n"; // serialize($assoc)
fwrite($fp, $insert);
}
上面的代碼在服務器上成功創建了文件,但無法替換,而不是在服務器上創建文件,我希望它在用戶端下載文件。 我是否應該使用任何excel庫,因為我也必須命名excel工作表。
首先,創建帶有XLS擴展名的TSV文件。 如果需要創建XLS文檔,則應使用PHPExcel左右。
如果CSV對您來說足夠了,那么從5.1開始就有fputcsv可用,您可以將文件數據直接流式傳輸到用戶代理。
$filename = "PM.csv";
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="'.addcslashes($filename, '\\"').'"');
$fp = fopen('php://output', 'wb');
// ...
while($row = mysqli_fetch_row($result))
{
fputcsv($fp, $row, ',', '"');
}
fclose($fp);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.