Вам нужно еще несколько вещей, чтобы сделать эту работу. Возможно, вы уже сделали что-то из этого и не вставили, но вот...
Я предполагаю, что вы настроили свой сайт для использования чистых URL-адресов с .htaccess, следуя это руководство. Теперь вы можете добавить:
в config/main.php, раздел urlMananger вам нужен маршрут к классу контроллера и методу действия. Это сообщает Yii, какой контроллер использовать при переходе по URL-адресу /uploads/Tutorial.pdf
.
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'uploads/<filename:[a-zA-Z]+\.pdf>' => 'upload/viewPdf', // actionViewPdf Method in UploadController class
// ... all your other rules
),
),
И класс контроллера, и метод с тем же именем, что и в вашем маршруте выше (с префиксом action
):
class UploadController extends Controller
{
// Put the usual Yii access control stuff here or whatever...
public function actionViewPdf()
{
$filename = $_GET['filename'] . '.pdf';
$filepath = '/path/to/your/pdfs/' . $filename;
if(file_exists($filepath))
{
// Set up PDF headers
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filepath));
header('Accept-Ranges: bytes');
// Render the file
readfile($filepath);
}
else
{
// PDF doesn't exist so throw an error or something
}
}
}
Тогда вы сможете использовать
echo CHtml::link(
'pdf',
Yii::app()->createUrl('/uploads/viewPdf', array('filename' => 'Tutorial')) ,
array('class'=>'button','target'=>'_blank'));
Надеюсь, это полезно.
person
JamesG
schedule
02.03.2014