Я создаю конечную точку для мобильного приложения для отправки изображения на сервер. Я отправляю изображение с расширением POSTMAN для хром. Изображение находится в переменной $_FILES
и называется image
. Как загрузить это изображение в модель или класс UploadedFile
? Строка $model->load(Yii::$app->request->post())
неправильно загружает файл, так как это не относится к именованию Yii2 для форм.Yii2 POST изображение для модели в API без Yii2 Соглашение об именовании
Это в настоящее время возвращения:
{
"success": false,
"message": "Required parameter 'image' is not set."
}
Код
модели \ image.php
<?php
namespace api\modules\v1\models;
use yii\base\Model;
use yii\web\UploadedFile;
class Image extends Model
{
/**
* @var UploadedFile
*/
public $image;
public function rules()
{
return [
[['image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
];
}
public function upload()
{
$path = dirname(dirname(__FILE__)) . '/temp/';
if ($this->validate()) {
$this->image->saveAs($path . $this->image->baseName . '.' . $this->image->extension);
return true;
} else {
die(var_dump($this->errors));
return false;
}
}
}
контроллеры \ DefaultController.php
<?php
namespace api\modules\v1\controllers;
use api\modules\v1\models\Image;
use yii\web\Controller;
use yii\web\UploadedFile;
use Yii;
class DefaultController extends Controller
{
public $enableCsrfValidation = false;
public function actionIndex()
{
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$model = new Image();
if (Yii::$app->request->isPost) {
if($model->load(Yii::$app->request->post()))
{
$model->image = UploadedFile::getInstance($model, 'image');
if ($model->upload()) {
// file is uploaded successfully
return ['success' => true, 'message' => 'File saved.'];
}
else return ['success' => false, 'message' => 'Could not save file.'];
}
else return ['success' => false, 'message' => 'Required parameter \'image\' is not set.'];
}
else return ['success' => false, 'message' => 'Not a POST request.'];
}
}
Функции, указанные Вами в пункте 2 был именно то, что я был после. Спасибо. –