2017-09-01 8 views
1

をダウンロードIは、コントローラ・コードを有する:Yii2 SENDFILE()いくつかの文字を表示する代わりに

public function actionDownload($id) { 
 

 
     $download = Status::findOne($id); 
 

 
     $path = Yii::getAlias('@webroot').'/uploads/status/'.$download->image_web_filename; 
 

 
     if (file_exists($path)) { 
 
      return Yii::$app->response->SendFile($path,$download->image_src_filename); 
 
      
 
      exit; 
 
     } else { 
 
      throw new NotFoundHttpException("can't find {$download->image_src_filename} file"); 
 
     } 
 
    }

私はGridViewのにビューコードを有する:

['attribute'=>'Download', 
 
     'format'=>'raw', 
 
     'value' => function($data) 
 
     { 
 
     return 
 
     Html::a('Download file', ['status/download','id'=>$data->id],['class' => 'btn btn-primary']); 
 

 
     } 
 
     ],

これは私がブラウザを更新する場合にのみダウンロードされscreen.The PDFファイル上に表示するものであるが、これはまだ問題?:

%PDF-1.4 %�쏢 5 0 obj <> stream x��]K�%ECű%P4���y��.�u�@�Q �zt��P�0��_��'��gx����/3�n���zܞ���xaAR7o�s�<�;�����܈�o��w?8��]�y�/'�O�FU��@b㍤���G����͇'r����4�+B��{3���SW����'��<�������A�ǃ*x���N27r�$���V������w�_?��k�~���+�'wFr6��f! ��ȍ7�Ӡ���UG���g;=�2�j��Ǒ �oƱQƇfh�?�WҘ�0۟��/�l�E���i(�{��* ��'�W��8��T�j 2��p������\��aܵH�$�Ci��u��$j��QZ���aIk����\o���D2Y)�/FV��nġ�a����� �_ؐ��rf�� �7�*� �IN�J{�l����Cqr�D�������[�]9���E�7�����k�j���9N�\�EC��F����&ռ-����uJV����3����L!�f��x���F�����̈́��#��U����:*g��&C�ӤD��q�17�@Jg+�J����w��ߨ?M_�a���R�ݼ��zu%��\�#�7$M&���-dO"#�]�i�89�}��<��� m��04�I�bHJ �O�M��`f�Ϯ�E�{2}`���n�����.l���+cZ?�����6C��N��XZJW�ylȒ��"�D�ͧ�8s���q��o׉m��ݍx�6(��T�9Uɨ�g���x���\���'�Ͻ����BE��|��� p���9P]��R*����C��������jC�m���1��#K���׶Y���rt=�:�x����W����qr�便p4��"��B�}=�2������p��!x+�)zv���̳���\^*�R�ugȎ!J<��q�~���C��/��ˏU8�C7A0`�6x����6ۗ#�b���Ħ�(��Sk̍�"|����9�" �G�`@LD���e�B�Q���� d��[q�Z�aځ��-j�����Zk�}F4���l���y�T ��B��|���ҕ~/����a�+�7��Ai=W���1�

答えて

0

それがどのように見えるされているものを画面上に残っていますあなたはそのためのヘッダーが必要です。

このコードを試してみてください。

public function actionDownload($id) { 
    header("Content-type:application/pdf"); 

........ 

すぎ

header("Content-Disposition:attachment;filename='filename.pdf'"); 
+0

私はうまくいきませんでしたが、ありがとうございます。 –

0

このヘッダーを追加しようと動作しない場合、私は、この特定のコードで持っていた問題は、私は <?php Pjax::begin(); ?>を削除しなければならなかったということです<?php Pjax::end(); ?>と上記の'pjax'=>trueとグリッドビューの列にあるので、私はactionDownload($id)コード内の何も変更しませんでした

編集前(元の誤ったコード) `................................... 。

<h3><?= Html::encode($this->title) ?></h3> 

<p> 
    <?= Html::a('Create Status', ['create'], ['class' => 'btn btn-success']) ?> 
</p> 
<?php Pjax::begin(); ?> 

<?php 

$gridColumns = [ 
['class' => 'kartik\grid\SerialColumn'], 
'id', 
'message', 
'permissions', 
'created_by', 
'created_at', 
// 'updated_at', 
// 'image_src_filename', 
//'image_web_filename', 

['attribute'=>'Download', 
    'format'=>'raw', 
    'value' => function ($data) { 
     return 
     Html::a('Download file', ['status/download','id'=>$data->id], ['class' => 'btn btn-primary']); 
    } 
    ], 
]; 
?> 
<?php 
$export = ExportMenu::widget([ 
'dataProvider' => $dataProvider, 
//'columns' => $gridColumns, 
'fontAwesome' => true, 
'exportConfig' => [ 
ExportMenu::FORMAT_HTML => false, 
ExportMenu::FORMAT_TEXT => false, 
ExportMenu::FORMAT_CSV => false, 
ExportMenu::FORMAT_EXCEL => false, 
ExportMenu::FORMAT_EXCEL_X => false, 
], 
]); 
?> 

<?php 
echo GridView::widget([ 
'dataProvider' => $dataProvider, 
'filterModel' => $searchModel, 
'columns' => $gridColumns, 
'containerOptions' => ['style' => 'overflow: auto'], // only set when $responsive = false 
'toolbar' => [ 
$export 
], 
'pjax' => true, 
'bordered' => true, 
'striped' => true, 
'responsive' => true, 
'floatHeader' => true, 
'panel' => [ 
'type' => GridView::TYPE_PRIMARY, 
'heading' => 'Forms Uploaded by Clients.', 
], 
]); 
?> 

<?php Pjax::end(); ?></div>` 

編集(元の誤コード)後

`

<h3><?= Html::encode($this->title) ?></h3> 

<p> 
    <?= Html::a('Create Status', ['create'], ['class' => 'btn btn-success']) ?> 
</p> 

<?php 

$gridColumns = [ 
['class' => 'kartik\grid\SerialColumn'], 
'id', 
'message', 
'permissions', 
'created_by', 
'created_at', 
// 'updated_at', 
// 'image_src_filename', 
//'image_web_filename', 

['attribute'=>'Download', 
    'format'=>'raw', 
    'value' => function ($data) { 
     return 
     Html::a('Download file', ['status/download','id'=>$data->id], ['class' => 'btn btn-primary']); 
    } 
    ], 
]; 
?> 
<?php 
$export = ExportMenu::widget([ 
'dataProvider' => $dataProvider, 
//'columns' => $gridColumns, 
'fontAwesome' => true, 
'exportConfig' => [ 
ExportMenu::FORMAT_HTML => false, 
ExportMenu::FORMAT_TEXT => false, 
ExportMenu::FORMAT_CSV => false, 
ExportMenu::FORMAT_EXCEL => false, 
ExportMenu::FORMAT_EXCEL_X => false, 
], 
]); 
?> 

<?php 
echo GridView::widget([ 
'dataProvider' => $dataProvider, 
'filterModel' => $searchModel, 
'columns' => $gridColumns, 
'containerOptions' => ['style' => 'overflow: auto'], // only set when $responsive = false 
'toolbar' => [ 
$export 
], 
'bordered' => true, 
'striped' => true, 
'responsive' => true, 
'floatHeader' => true, 
'panel' => [ 
'type' => GridView::TYPE_PRIMARY, 
'heading' => 'Forms Uploaded by Clients.', 
], 
]); 
?>` 

すべてです!私は知った。

関連する問題