Narzędzia użytkownika

Narzędzia witryny


upload_plikow

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
upload_plikow [2022/10/08 21:45] – utworzono zbychupload_plikow [2024/11/12 18:19] (aktualna) – [Download plik] zbych
Linia 1: Linia 1:
 +====== Alias do folderu ======
 +Dostęp do folderu pliki w katalogu głównym aplikacji  
 +W pliku common/config/main.php trzeba dopisać w sekcji aliases:
 +<code php>
 +'aliases' => [
 +        '@bower' => '@vendor/bower-asset',
 +        '@npm' => '@vendor/npm-asset',
 +        
 +        '@pliki'=>realpath(dirname(__FILE__).'/../../pliki')
 +    ],
 +</code>
 +W folderze pliki mam podfolder prace-dyplomowe
 +ścieżka do tego podfolderu wygląda tak:
 +<code php>
 +$path = Yii::getAlias('@pliki') . '/prace-dyplomowe/';
 +</code>
 +na moim lokalnym serwerze $path wyglada tak: /var/www/projekt100/pliki/prace-dyplomowe/
 +
 +
 ====== Model ====== ====== Model ======
 <code php> <code php>
Linia 48: Linia 67:
  
 </code> </code>
 +
 +===== Controller =====
 +<code php>
 +
 +use yii\web\UploadedFile;
 +use app\models\UploadFormPracaDypl;
 +
 +...
 +
 +public function actionUpPraca($id) {
 +
 +        $model_upload = new UploadFormPracaDypl();
 +        if (Yii::$app->request->isPost) {
 +            $model_upload->file = UploadedFile::getInstance($model_upload, 'file');
 +            $path = Yii::getAlias('@pliki') . '/prace-dyplomowe/';
 +            if (!is_dir($path)) {
 +                mkdir($path);
 +            }
 +            
 +            $name = 'nazwa pliku';
 +            if ($plik = $model_upload->upload($path, $name)) {
 +                
 +                return $this->redirect(Url::previous('moje_studia'));
 +            } else {
 +                Yii::$app->session->setFlash('danger', "Praca nie została dodana !!!");
 +                return $this->redirect(Url::previous('moje_studia'));
 +            }
 +        }
 +        return $this->renderAjax('up-praca', [
 +                    'model_upload' => $model_upload
 +        ]);
 +    }
 +</code>
 +
 +===== Formularz =====
 +<code php>
 +<?php
 +use kartik\form\ActiveForm;
 +use yii\helpers\Html;
 +use kartik\file\FileInput;
 +?>
 +<?php yii\widgets\Pjax::begin(['id' => 'up_pr']) ?>
 +<?php
 +$form = ActiveForm::begin([
 +            'id' => 'up_praca',
 +            'options' => ['enctype' => 'multipart/form-data', 'data-pjax' => true]]);
 +?>
 +
 +<?= $form->field($model_upload, 'file')->widget(FileInput::class, [
 +                'language' => 'pl',
 +                'options' => [
 +                    'multiple'=>false,
 +                    'id' => 'pdpl',
 +                ],
 +                'pluginOptions' => [
 +                    'showCaption' => false,
 +                    'showUpload' => false,
 +                ]
 +])->label(false); ?>
 +
 +<div class="form-group">
 +    <?= Html::submitButton('Zapisz', ['class' => 'btn btn-success submit']) ?>
 +</div>
 +<?php ActiveForm::end(); ?>
 +<?php yii\widgets\Pjax::end() ?>
 +
 +</code>
 +
 +====== Download plik ======
 +
 +<code php>
 +public function actionDownload($id) {
 +        ...
 +        $path = Yii::getAlias('@pliki') . '/zaswiadczenia/' . $model_plik->nazwa_pliku;
 +        if (file_exists($path)) {
 +            return Yii::$app->response->sendFile($path, $model_plik->nazwa_pliku, ['inline' => true]);
 +        }
 +    }
 +</code>
 +
 +===== Plik z pola blob w tabeli BD =====
 +<code php>
 + public function actionDokument($id) {
 +        ob_start();
 +        $mod = Dokumenty::find()
 +            ->where(['id' => $id])
 +            ->one();
 +        if (!$mod) {
 +            throw new \yii\web\NotFoundHttpException('Dokument nie został znaleziony.');
 +        }
 +        $nazwa = str_replace(' ', '_', trim($mod->tytul));
 +        $response = Yii::$app->response;
 +        $response->format = \yii\web\Response::FORMAT_RAW;
 +        $response->headers->set('Content-Type', $mod->mime_type);
 +        $response->headers->set('Content-Disposition', 'inline; filename="' . str_replace(' ', '_', trim($mod->tytul)) . '.' . $mod->rozszerzenie . '"');
 +        $response->headers->set('Content-Length', strlen($mod->plik));
 +        $response->content = $mod->plik;
 +
 +        // Opcjonalnie: zakończenie i wyczyszczenie bufora wyjścia
 +        ob_end_clean();
 +        return $response;
 +    }
 +</code>
 +
 +
  
upload_plikow.1665258329.txt.gz · ostatnio zmienione: 2024/09/15 16:22 (edycja zewnętrzna)