Всем привет.
Пытаюсь загрузить музыку на сервер
.mp3
Модель
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\web\UploadedFile;
class MusicUpload extends Model{
public $image;
public function rules()
{
return [
[['image'], 'required'],
// [['image'], 'file', 'extensions' => 'jpg,png']
];
}
public function uploadFile(UploadedFile $file, $currentImage)
{
$this->image = $file;
if($this->validate())
{
$this->deleteCurrentImage($currentImage);
return $this->saveImage();
}
}
private function getFolder()
{
return Yii::getAlias('@web') . 'uploads/musics/';
}
private function generateFilename()
{
return strtolower(md5(uniqid($this->image->baseName)) . '.' . $this->image->extension);
}
public function deleteCurrentImage($currentImage)
{
if($this->fileExists($currentImage))
{
unlink($this->getFolder() . $currentImage);
}
}
public function fileExists($currentImage)
{
if(!empty($currentImage) && $currentImage != null)
{
return file_exists($this->getFolder() . $currentImage);
}
}
public function saveImage()
{
$filename = $this->generateFilename();
$this->image->saveAs($this->getFolder() . $filename);
return $filename;
}
}
Метод из MusicController
public function actionSetFile($id)
{
$model = new MusicUpload();
if (Yii::$app->request->isPost)
{
$article = $this->findModel($id);
$file = UploadedFile::getInstance($model, 'image');
if($article->saveFile($model->uploadFile($file, $article->path)))
{
return $this->redirect(['view', 'id'=>$article->id]);
}
}
return $this->render('music', ['model'=>$model]);
}
Модель Music
public function saveFile($filename)
{
$this->path = $filename;
return $this->save(false);
}
Сама форма
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'image')->fileInput() ?>
<div class="form-group">
<?= Html::submitButton('Загрузить', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
Попытался в контроллере, после проверки
Yii::$app->request->isPost вывести, что приходит на сервер, но сразу выплевывает 400 ошибку...
Гугл подсказал, что возможно проблема в csrf токенах, но в форме он присутствует.
На локалке такой ошибки нет.
Благодарю за помощь :)