我想在選擇從MySQL數據庫中抓取哪些數據後使用一個表單來生成一個excel文件。我正在使用cURL,因爲我基本上想要雙重張貼:首先保存使用哪些字段的任何設置,然後使用一個按鈕生成Excel文件。爲什麼我無法通過cURL/PHP生成Excel文件?
我有一個PHP頁面設置正確的標題,以生成一個簡單的Excel文件從標籤分隔的內容(不處理w /行結尾或字段中的標籤,只是保持簡單)。如果我直接用瀏覽器打開該頁面(並在PHP中包含虛擬數據),我的瀏覽器會下載一個Excel文件。
我通過cURL文章(如果我不通過cURL-- ??發送標題)獲取數據。
而這裏的約,我迷路:
如何創建/下載數據,通過捲曲的Excel文件?
我的猜測是這樣做的瓦特/頭?
在PHP中設置頁眉得不錯:
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Pragma: public");
header("Cache-control: max-age=0");
當我通過捲曲設置他們,而不是,我這樣做(當然,這些都是我的捲曲選項):
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $foo);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Disposition: attachment; filename=test.xls',
'Content-Type: application/vnd.ms-excel; charset=UTF-8',
'Pragma: public',
'Cache-control: max-age=0'
));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response_code = curl_exec($ch);
if ($response_code!== false) {
echo 'response: '.$response_code;
} else {
echo 'error: '.curl_error($ch);
}
curl_close ($ch);
當我這樣做,我在發送頁面上得到的cURL $ response_code看起來像這樣(我已經打破了線條 - 這全是一條線):
HTTP/1.1 200 OK
Date: Sun, 31 Jan 2010 20:43:38 GMT
Server: Apache
Transfer-Encoding: chunked
Content-Type: text/html
當我不通過cURL包含頭文件時,$ _POST正在工作。但是當我包含頭文件時,$ _POST不起作用。
Transfer-Encoding: chunked
似乎是一個線索。但最初的研究並沒有幫助我,部分原因是,正如我所提到的,我迷路了。
任何想法?
謝謝!
-Jeremy
謝謝 - 是的,我真的只是生成一個CSV(實際上,它是製表符分隔)。通過添加標題,瀏覽器自動生成文件。當我直接訪問頁面時,這工作正常。 – 2010-01-31 21:01:33
啊。但是,我不明白這個問題是什麼?你在用CURL做什麼? – 2010-01-31 21:02:32
您是否在尋找如何在CURL請求中包含文件?然後,也許這可以幫助你:http://dtbaker.com.au/random-bits/uploading-a-file-using-curl-in-php.html – 2010-01-31 21:03:40