Я пытаюсь создать форму с вводом текста и вводом файла загрузки, используя Angular6 для стороны клиента и Yii2 для стороны сервера.
Угловой сервис:
create(name: string, image: any): Observable<any> {
let url = this.baseUrl + 'create';
let form: FormData = new FormData();
form.append('image', image);
form.append('name', name);
return this.http.post<Notification>(url, form);
}
Контроллер Yii:
public function beforeAction($action)
{
$this->enableCsrfValidation = false;
return parent::beforeAction($action);
}
public function actionCreate()
{
$model = new MapCreationFormModel();
if ($model->load(Yii::$app->request->post()))
{
$model->image = UploadedFile::getInstance($model, 'image');
$response = MapRepository::create($model->name, $model->image);
return json_encode($response);
}
else
{
// >>> This exception is thrown.
throw new Exception("Cannot bind model");
}
}
Модель Yii:
class MapCreationFormModel extends Model
{
public $name;
public $image;
}
Используя fiddler, я вижу свой запрос:
------ WebKitFormBoundaryIv0dYBA9ZKwRHXlu Content-Disposition: form-data; Name = "изображение"; filename = "test.bmp" Content-Type: image / bmp
BM [[[SPECIAL CHARACTERS]]]
------ WebKitFormBoundaryIv0dYBA9ZKwRHXlu Content-Disposition: form-data; имя = "имя"
аа
------ WebKitFormBoundaryIv0dYBA9ZKwRHXlu -
К сожалению, исключение «Исключение (« Невозможно связать модель »)» из моего контроллера выброшено (см. Код контроллера).
У вас есть идеи, почему моя модель не может быть связана?