2014-08-28 98 views
-1

看着Force Download of Files with PHPForce download file with PHP giving empty file,並且給我帶來了一個最接近,How to force download an image without a script, but with $_GET?取得PHP強制文件下載

我仍然無法拿出一個解決我的問題。

我有一個html文件,允許用戶提交一個文件發佈到我的'upload_file.php'PHP腳本文件。

<html> 
<body> 

<form action="upload_file.php" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file"><br> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 

upload_file.php取入該文件,不一堆改變它的,拉數據輸出,並且生成經由PHPExcel結束XLSX文件。這是一個簡單的格式轉換和一點邏輯。目前,爲了測試,我只是把這個文件與php文件一起寫入。我可以讓upload.php文件輸出一個指向該文件的鏈接,並稱其爲好。

但是,我寧願用戶點擊初始上傳按鈕,並在運行幾秒鐘後,生成的文件開始下載到他們的系統。上面的鏈接似乎在討論下載的csv或html文件 - 與實際的文件。

只是'迴響'文件名似乎並沒有這樣做(如在其他線程中所暗示的那樣)。我還看到一個建議,正確地設置標題,我發現內容類型應該是「application/vnd.openxmlformats-officedocument.spreadsheetml.sheet」xlsx文件 - 但沒有人真正充實了什麼'設置標題「的意思,也不知道如何去做。

我無法想象這很難,但我似乎無法排序。任何人都可以幫助這個初學者?

另外,如果可能的話,我很樂意,如果該文件從來沒有在服務器上存在的話 - 但我不知道這是可能的PHPExcel對象...

+2

」上面的鏈接似乎在討論下載的csv或html文件 - 與實際文件相比。「 ??因爲html文件或csv文件是假文件? – PeeHaa 2014-08-28 16:17:34

+1

你的問題是如此臃腫與不需要的信息,我不明白你的實際問題... – 2014-08-28 16:19:16

+0

@NielsKeurentjes當有人上傳文件,他希望執行一些突變,把它變成一個xlsx文件,然後「提示」文件下載一次該任務已經運行。 – Ohgodwhy 2014-08-28 16:21:20

回答

3

用戶上傳的文件並且您可以記住上傳文件的名稱。

那麼您可以使用之前的answered解答如何強制文件下載的問題。

坑挖掘機的解決方案:

$file_url = 'http://www.myremoteserver.com/file.exe'; 
header('Content-Type: application/octet-stream'); 
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url); // do the double-download-dance (dirty but worky) 

成因的解決方案:

header("Content-Type: application/octet-stream"); 
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"file.exe\""); 
echo readfile($url); 

,或者對於EXE文件

header("Location: $url"); 

注意:很高興看到你已經嘗試過,看看你是否對如何完成任務有所瞭解,甚至可能會告訴我們你想要達到的目標。如果這不是你的問題的答案,那麼我強烈建議你編輯你的問題來啓發我們,因爲它可以更清楚。 「

+1

這樣做的竅門,現在文件下載。我添加了創世紀的解決方案。 但是,文件下載'不正確'(即:服務器上的文件打開正常,但下載的文件被視爲損壞),我會打開一個新的問題。 – lowcrawler 2014-08-28 17:34:32