Как мы можем сохранить изображение в папке yii2 framework?

#yii2

#yii2

Вопрос:

Когда я загружаю изображение, оно сохраняется в папке по умолчанию, которая называется /web . Я хочу сохранить свои изображения в пользовательской папке.

Ответ №1:

Если это пользовательская папка, скорее всего, вам придется создавать каталог «на лету», чего не делает метод UploadedFile. Для Yii2 я бы использовал метод CreateDirectory() в классе «yii helpers BaseFileHelper». например:

 use yiiwebUploadedFile;
use yiihelpersBaseFileHelper;

$model->uploaded_file = UploadedFile::getInstance($model, 'uploaded_file');

$unique_name = uniqid('file_');
$model->file_type = $model->uploaded_file->extension;
$model->file_name = $unique_name.'.'.$model->file_type;
$model->file_path = 'uploads/projects/'. $project_id;

BaseFileHelper::createDirectory($model->file_path);

$model->uploaded_file->saveAs($model->file_path .'/'. $model->file_name);
$model->save();
 

Проверьте CreateDirectory

Ответ №2:

Что-то вроде этого должно выполнить эту работу, если вы используете model / active form для отправки формы (загрузки изображения). Ключевой частью является SaveAs, где первым параметром может быть путь к файлу. Сюда входят также псевдонимы Yii.

 if (Yii::$app->request->isPost) {
    $model->load(Yii::$app->request->getBodyParams());
    $file = yiiwebUploadedFile::getInstance($model, 'image');
    $file->saveAs('path/to/file');
}
 

Также более подробно изучите класс UploadedFile.

Комментарии:

1. спасибо за ваше предложение, но теперь я знаю, как изменить path.. мы можем использовать chdir(‘путь к папке’); и это изменит наш каталог по умолчанию на определяемый пользователем каталог. В YII2

Ответ №3:

Комментарии:

1. Можете ли вы сказать мне, как это сделать в yii2. Я столкнулся с некоторой проблемой в yii2

Ответ №4:

Лучший способ — использовать yii2 file kit. https://github.com/trntv/yii2-file-kit Это еще одна особенность

  • Виджет загрузки файлов (на основе загрузки файлов Blueimp)
  • Компонент для хранения файлов (встроенный поверх flysystem)
  • Действия для загрузки, удаления и просмотра (загрузки) файлов
  • Поведение для сохранения файлов в модели и удаления файлов при удалении модели

Ответ №5:

 if ($model->load(Yii::$app->request->post())) {

    $model->password=md5($model->password);
    $model->photo = UploadedFile::getInstance($model, 'photo');

    if($model->validate()){
        $model->photo->saveAs('uploads/' . $model->photo->baseName . '.' . $model->photo->extension);
        $model->save();
        return $this->redirect(['index']);
    }
} 
 

Он сохраняет мои изображения в папке web / uploads.

Ответ №6:

Yii::$app->basePath соответствует папке вашего приложения, например myappbackend .Поэтому, если вы хотите сохранить его myappbackenddata , сохраните его как

 $file = yiiwebUploadedFile::getInstance($model, 'logo');
$file->saveAs(Yii::$app->basePath . '/data/'.$file);