Narzędzia użytkownika

Narzędzia witryny


upload_plikow

To jest stara wersja strony!


Alias do folderu

Dostęp do folderu pliki w katalogu głównym aplikacji W pliku common/config/main.php trzeba dopisać w sekcji aliases:

'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm' => '@vendor/npm-asset',
        **'@pliki'=>realpath(dirname(__FILE__).'/../../pliki')**
    ],

W folderze pliki mam podfolder prace-dyplomowe ścieżka do tego podfolderu wygląda tak:

$path = Yii::getAlias('@pliki') . '/prace-dyplomowe/';

na moim lokalnym serwerze $path wyglada tak: /var/www/projekt100/pliki/prace-dyplomowe/

Model

<?php
 
namespace app\models;
 
use yii\base\Model;
use yii\web\UploadedFile;
 
/**
 * Model dla uploadu plików.
 */
class UploadFormPracaDypl extends Model {
 
    /**
     * @var UploadedFile file atrybut
     */
    public $file;
 
    /**
     * Dposzczalne rozszerzenia POLON : 
     * @return array reguły walidacji.
     */
    public function rules() {
        return [
            [['file'], 'file', 'extensions' => 'txt,rtf,pdf,xps,odt,ods,odp,doc,xls,ppt,docx,xlsx,pptx,csv', 'maxSize' => 20000 * 1024, 'tooBig' => 'Za 
             duży plik! Max: 20MB'],
        ];
    }
 
    public function attributeLabels() {
        return [
            'file' => 'Plik pracy (max 20MB)',
        ];
    }
 
    public function upload($path, $name) {
        if ($this->validate()) {
            $path_file = $path . '/' . $name . '.' . $this->file->extension;
            $this->file->saveAs($path_file);
            return $name . '.' . $this->file->extension;
        } else {
            return false;
        }
    }
 
}

Controller

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
        ]);
    }

Formularz

<?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() ?>
upload_plikow.1665307749.txt.gz · ostatnio zmienione: 2024/09/15 16:22 (edycja zewnętrzna)