簡體   English   中英

如何下載文件而不是保存在服務器上?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM