@Fqwd123

Как сохранить картинку на сервер?

Никак не получается загрузить фотку на сервер, делал по разным примерам, загрузка просто не происходит. Подскажите что делаю не так:
Модель:
class UploadForm extends Model
{
   
    public $imageFile;

    public function rules()
    {
        return [
            [['imageFile'], 'image', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
        ];
    }

    public function upload()
    {
        if ($this->validate()) {
            $this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
            return true;
        } else {
            return false;
        }
    }
}

Контроллер:
class UploadController extends Controller
{
    public function actionUpload()
    {
        $model = new UploadForm();

        if (Yii::$app->request->isPost) {
            $model->imageFile = UploadedFile::getInstance($model, 'imageFile');
            if ($model->upload()) {
                echo '345';

            }
        }
        return $this->render('upload', ['model' => $model]);
    }
}

Вид:
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

<?= $form->field($model, 'imageFile')->fileInput() ?>

    <button>Submit</button>

<?php ActiveForm::end() ?>

Как я полагаю вся беда в этой строчке
$this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
оно не находит такую папку, у меня прямо в корне лежит папка uploads, если проблема в этом, то подскажите как задать путь к ней
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
slashinin
@slashinin
Задачи для PHP https://justcoding.ru
Возможно стоит указывать полный путь для сохранения.
Я обычно создаю Алиасы для хранения файлов

'@picture' => '/uploaded/',
'@upload' => '@app/web/uploaded/',


Первый алиас для обращения к файлу через Web, а второй для сохранения файла т.к. это полный путь.
Вот так выглядит сохранение файла

$file = UploadedFile::getInstance($this, $code);
$filePath = time() . '_' . $file->baseName . '.' . $file->extension;
$file->saveAs('@upload/' . $filePath);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы