Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/carono/yii2-file-upload

Таблица для хранения файлов
https://github.com/carono/yii2-file-upload

files trait yii2

Last synced: about 5 hours ago
JSON representation

Таблица для хранения файлов

Awesome Lists containing this project

README

        

[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/carono/yii2-file-upload/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/carono/yii2-file-upload/?branch=master)
[![Latest Stable Version](https://poser.pugx.org/carono/yii2-file-upload/v/stable)](https://packagist.org/packages/carono/yii2-file-upload)
[![Total Downloads](https://poser.pugx.org/carono/yii2-file-upload/downloads)](https://packagist.org/packages/carono/yii2-file-upload)
[![License](https://poser.pugx.org/carono/yii2-file-upload/license)](https://packagist.org/packages/carono/yii2-file-upload)

Установка
=========
1. Создать миграцию и наследовать её от `carono\yii2file\FileUploadMigration`
```php
class m170927_171858_fu extends \carono\yii2file\FileUploadMigration
{
public $tableName = '{{%file_upload}}';
}
```

2. Или выполнить `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();`

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

```php
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 при ошибках

Схема
=====