'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 ======
'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 =====
'up_pr']) ?>
'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); ?>
= Html::submitButton('Zapisz', ['class' => 'btn btn-success submit']) ?>
====== Download plik ======
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]);
}
}
===== Plik z pola blob w tabeli BD =====
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;
}