2017-08-02 55 views
1

生成CSV如何實現類似的解決方案是這樣的:Symfony2的 - 從字符串和力文件下載

$file = generateCSV(); 
header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename="asd"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
echo $file; 
exit(); 

使用的Symfony Response對象?

現在我有

$file = generateCSV(); 
    $response = new Response($file); 
    $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'asd'); 
    $response->headers->set('Content-Disposition', 'text/csv'); 
    $response->headers->set('Pragma', 'no-chache'); 
    $response->headers->set('Expires', '0'); 
    return $response; 

,但它似乎並沒有因爲而不是發送文件下載它使我的文件瀏覽器中的文字工作。

任何幫助將不勝感激。

回答

2

沒有指定內容類型。我下載的例子:

$dispositionHeader = $response->headers->makeDisposition(
      ResponseHeaderBag::DISPOSITION_ATTACHMENT, 
      $filename . '.csv' 
     ); 

$response->headers->set('Content-Type', 'text/csv; charset=utf-8'); 
$response->headers->set('Pragma', 'public'); 
$response->headers->set('Cache-Control', 'maxage=1'); 
$response->headers->set('Content-Disposition', $dispositionHeader); 
+0

謝謝,這解決了我的問題。 – IFeel3

1

我這樣做是這樣的:

$response = new StreamedResponse(); 
    $response->setCallback(

    /* here you generate your csv file */ 

    ); 

    $response->setStatusCode(200); 
    $response->headers->set('Content-Type', 'text/csv; charset=utf-8'); 
    $response->headers->set(
     'Content-Disposition', 
     'attachment; filename="file.csv"' 
    ); 

    return $response;