1. 程式人生 > >通過PHP將檔案以流的方式傳送客戶端

通過PHP將檔案以流的方式傳送客戶端

以前在ASP下,通過BASP21實現類似功能。現在將PHP版本整理在這裡。

通過以下程式碼中所使用的技術可以實現如下幾個可能的需求

1、在有模板的基礎上,針對客戶的定製下載。

2、一些瀏覽器本身能夠表示的檔案型別(如txt檔案),可以通過將頭資訊Content-Type改為 header("Content-Type: application/force-download");進行強制下載。

3、對於一些動態生成檔案,比如TXT/CSV等檔案,將臨時檔案及時刪除

<?php
/**
 * 本程式實現了將測試檔案[test.pdf]建立副本,並將副本讀入
 * 記憶體,以流的方式傳送給客戶端瀏覽器,最終刪除副本的操作。
 * 
 * 本文可以實現的需求:
 *   1、在有模板的基礎上,針對客戶的定製下載。
 *   2、一些瀏覽器本身能夠表示的檔案型別(如txt檔案),可以通過將頭資訊Content-Type
 *      改為 header("Content-Type: application/force-download");進行強制下載。
 *   3、對於一些動態生成檔案,比如TXT/CSV等檔案,可以將臨時檔案及時刪除
 * @author 
[email protected]
2015/05/05 */ // 檔名副檔名 $fileExName = ".pdf"; // 原始檔案檔名 $oldFileMainName = "testfile"; // 獲得時間戳 YYYYMMDDHHMISS $timestamp = date ( "YmdHis", time () ); // 新檔名 $newFileName = $oldFileMainName . $timestamp; // 複製檔案 if (! copy ( $oldFileMainName . $fileExName, $newFileName . $fileExName )) { die ( "failed to copy" ); } // 設定下載頭資訊 header ( "Content-Type: application/pdf" ); header ( "Content-Disposition: attachment; filename=20150505.pdf" ); // 檔案流輸出到瀏覽器 readfile ( $newFileName . $fileExName ); // 刪除檔案 @unlink ( $newFileFullName ); ?>


相關推薦

通過PHP檔案方式傳送客戶

以前在ASP下,通過BASP21實現類似功能。現在將PHP版本整理在這裡。 通過以下程式碼中所使用的技術可以實現如下幾個可能的需求 1、在有模板的基礎上,針對客戶的定製下載。 2、一些瀏覽器本身能夠表示的檔案型別(如txt檔案),可以通過將頭資訊Content-Type改為

檔案的形式另存為下載

string strFile = Server.MapPath("/images/526763.pdf"); using (FileStream fs = new FileStream(strFile, FileMode.Open)) { byte[] bytes = new byte[(

檔案的形式傳給前端,前端點選按鈕下載

function getagimislog(btn){  var filePath = document.getElementById("filepath").innerHTML;var tr = btn.parentNode.parentNode;var tds = tr.getElementsByTagN

java上傳檔案方式判斷型別

package com.omg.utils; /** * 檔案型別枚取 */ public enum FileType { /** * JEPG. */ JPEG("FFD8FF"), /** * PNG. */ PNG("89504E47

圖片檔案方式寫入到jsp頁面

     最近專案中要求提供一個servlet供使用者訪問,用來將使用者照片直接顯示在網頁上,這個和驗證碼有點類似,只是圖片內容來自於檔案,沒什麼新東西,現在將部分關鍵實現程式碼貼在下面,以備參考。     response.setContentType("image/jpeg");      //設定返回

圖片檔案二進位制方式儲存和恢復

/** * 將圖片轉換成二進位制 * * @return */ static String getImageBinary() { BASE64Encoder encoder = new sun.misc.BASE64Encoder(); //本地圖片 Fil

C++使用curl庫 位元組方式 傳送 https同步請求

 //在資料頭設定  Content-Typeapplication/octet-stream 否則可能會預設因為有字元 & 造成無法正確傳輸; // 設定訊息頭 curl_slist *header = NULL; header = cur

關於RS485通訊中使用STM32串列埠DMA方式傳送資料丟失位元組的問題

1、開發平臺 計算機作業系統:WIN7 64位; 開發環境:Keil MDK 5.14; MCU:STM32F407ZET6; STM32F4xx韌體庫:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0; 串列埠除錯助手; 2、問題描述  &

Pythonjson方式傳送資料

今天在爬一個網站的時候遇到了這個問題,感謝老哥的解決方案 import urllib2 import json data = { 'a': 123, 'b': 456 } headers = {'Content-Type': 'app

SQLserver C#圖片二進位制方式儲存到資料庫,再從資料庫讀出圖片

一 儲存到資料庫 1、建立資料表UserPhoto  userID為varchar(50)    設定為標識列unique不能重複   alter table UserPhoto add  unique(UserID) &n

使用Tor加密方式傳送BCH

Tor(The Onion Router)是第二代洋蔥路由(onion routing)的一種實現,使用者通過Tor可以在網上進行匿名交流,它之所以被稱為Onion是因為它的結構就跟洋蔥相同,你只能看出它的外表,而想要看到核心就必須把它層層剝開。該專案最初是由美國海軍研究

php檔案每一行讀到一個數組裡面去

我現在需要把一個txt的檔案,讀到一個數組,最快的方法: $texts = file($filepath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

php圖片二進位制儲存到mysql資料庫並顯示

<?phpinclude('./conn.php');if ($_POST['submit']) {     if ($_FILES['image']['size']) {         $names = $_FILES['image']['name'];         $arr   = explo

SQL Server儲存過程郵件傳送表格方式傳送

BEGIN     SET NOCOUNT ON;    --初始化     Declare @MailTo nvarchar(max)     Declare @MailCc nvarchar(max)     Declare @MailBcc nvarchar(max)     Declare @Ma

Java呼叫Linux下的shell命令並結果的形式返回

這篇文章寫,Java呼叫 Linux的shell命令 並將結果以流的形式返回。 下面直接上程式碼,程式碼都是打了註釋的。 十分淺顯易懂。 import java.io.BufferedReader

smartupload實現 jsp頁面上傳檔案 檔案二進位制形式儲存在資料庫

<%@page import="com.sys.utils.DBConnection"%> <%@ page language="java" import="java.sql.*,com.jspsmart.upload.*"%> <jsp:us

程式碼Eval方式加密、解密

Eval加密方式是常用的JavaScript安全措施,但有些開源軟體實在不怎麼厚道,解密就成為了必要手段。下面這個網站有不錯的解密功能,前提是你必須把沒有加密的方式保留。 http://tool.115soft.com/Tools/Eval.aspx

串列埠DMA方式傳送(TX)資料

  實驗:控制串列埠一以DMA方式傳送(TX)資料 一、初始化DMA        對STM32任何模組使用前都要對其初始化、首先就是初始化外設時鐘,檢視時鐘 數可知DMA時鐘由AHB得來。 初始化時鐘:RCC->AHBENR|=1<<0;

如何檔案16進位制寫入檔案

怎麼把檔案以16進位制寫入檔案呢。比如,開啟Editplus,開啟一個exe檔案或者其他,會顯示如下: 4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00 00 00 00 40 00 00 00

ASP.Net圖片二進位制方式存入資料庫,並讀取

今天研究了一下如何將圖片已二進位制形式存入資料庫,然後再從中讀取顯示在頁面上。下面我會貼出一些關鍵程式碼。 1.將圖片存入資料庫 前臺程式碼: <asp:FileUpload ID="FileUploadImage" runat="server" />後臺程式