2014-09-09 2 views
0

моего контроллера:как установить правильный путь для загрузки файла в zendframework2

public function downloadAction() 
    { 
     $param['filename'] = $this->params()->fromRoute('filename'); 
$param['foldername'] = $this->params()->fromRoute('foldername'); 
    $fileName = $param['filename']; //bala.pdf 
    $folderName = $param['foldername']; //j1005 

$fileContents = file_get_contents($fileName); 

$response = $this->getResponse(); 
$response->setContent($fileContents); 

$headers = $response->getHeaders(); 
$headers->clearHeaders() 
    ->addHeaderLine('Content-Type', 'application/pdf') 
    ->addHeaderLine('Content-Disposition', 'attachment; filename="' .$fileName . '"') 
    ->addHeaderLine('Content-Length', strlen($fileContents)); 


return $this->response; 
} 

мое местоположение файл ./data/basepaper/j1005/bala.pdf, но я не знаю, как установить путь для загрузите файл

ответ

0

Возможно, вам будет полезно назначить вашу переменную должным образом (инициализировать пустой массив, например, перед использованием) и использовать ваши переменные (массив используется только для назначения переменных снова ...).

Что касается текущей проблемы, вы должны понимать основные из управления файлами на ZF2, и поэтому читать index.php:

<?php 
    /** 
    * This makes our life easier when dealing with paths. Everything is relative 
    * to the application root now. 
    */ 
    chdir(dirname(__DIR__)); 

означает, что вы можете обратиться к любому файлу от корневого каталога ваш проект.

Так что ваш код становится:

public function downloadAction() 
{ 
    // Combine assignation (unused array, and non initialised...) 
    $fileName = $this->params()->fromRoute('filename'); 
    $folderName = $this->params()->fromRoute('foldername'); 

    $fileContents = file_get_contents("data/basepaper/{$folderName}/{$fileName}"); 

    $response = $this->getResponse(); 
    $response->setContent($fileContents); 

    $headers = $response->getHeaders(); 
    $headers->clearHeaders() 
      ->addHeaderLine('Content-Type', 'application/pdf') 
      ->addHeaderLine('Content-Disposition', 'attachment; filename="' .$fileName . '"') 
      ->addHeaderLine('Content-Length', strlen($fileContents)); 

    return $this->response; 
} 
+0

поблагодарить у так много томас :-) – baladpi

Смежные вопросы