carono/yii2-file-upload

File storage table

Installs: 2 413

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 2

Forks: 1

Open Issues: 0

Type:yii2-extension

1.2.3 2022-10-13 20:08 UTC

This package is auto-updated.

Last update: 2024-04-14 00:16:33 UTC


README

Scrutinizer Code Quality Latest Stable Version Total Downloads License

Установка

  1. Создать миграцию и наследовать её от carono\yii2file\FileUploadMigration
class m170927_171858_fu extends \carono\yii2file\FileUploadMigration
{
    public $tableName = '{{%file_upload}}';
}
  1. Или выполнить yii migrate --migrationPath=@vendor/carono/yii2-file-upload/migrations

Как использовать

  1. В вашу модель таблицы file_upload добавить трейт carono\yii2file\FileUploadTrait
  2. После этого можно сохранять файлы следующим образом:
    FileUpload::startUpload('@runtime/test.txt')->process();
    FileUpload::startUpload('http://example.com/file.txt')->process();
    FileUpload::startUpload(yii\web\UploadedFile $file)->process();

По цепочке можно добавлять дополнительные свойства

FileUpload::startUpload('@runtime/img.png')
->slug('user_avatar') // поле slug
->data(['id'=>1]) // произвольные данные, записываются в data как json
->name('user_avatar.png') // сохраним файл в базе с новым именем
->folder('@app/new_destination') // сохраним файл в новой папке, по умолчанию @app/files
->delete(false) // не удалять файл источник по завершению, по умолчанию - удаляем
->process(); // сохраним модель

Свойства трейта

Свойство Значение Описание
$fileNameAsUid true Реальный файл хранить как uid.extension (bb1fe78c3b769eee34202da2ac1e89c8.txt), иначе как fileName.extension (test.txt)
$eraseOnDelete true при вызове delete(), удалять реальный файл
$fileUploadFolder @app/files папка хранения файлов

Методы трейта

Метод Описание
startUpload($file) начать загрузку файла
deleteFile() удалить реальный файл
getRealFileName() получить имя файла, которое хранится в FS
getRealFilePath() полный путь реального файла
fileExist() проверка существования файла
isImage() файл по mimeType является картинкой
getFileName() имя файла, которое записано в базе (user_avatar.png, а в FS хранится как bb1fe78c3b769eee34202da2ac1e89c8.png)

Особенности

Необходимо учесть, что при переопределение функции getRealFileName(), будет влиять и на имя при сохранении новых файлов подробнее смотрите carono\yii2file\Uploader

Не забудьте добавить поведение yii\behaviors\TimestampBehavior для хранения времени добавления

Загрузку файла необходимо оборачивать try...catch, т.к. будут вызываться Exception при ошибках

Схема

schema.png