我正在这个平台中构建一个需要标题和文件的页面。我正在使用FormData
。我已经像这样使用了另一个后端框架,我将一个字符串和一个文件附加到FormData
:
const data = new FormData();
data.append("title", this.state.title);
data.append("file", this.state.file[0]);
我正在使用Redux,因此这是与后端通信的操作:
export function createDownloadableForm(data) {
return (dispatch, getState) => {
const { auth: { oauthToken, oauthTokenSecret } } = getState();
return dispatch({
[CALL_API]: {
endpoint: "/api/downloadable-forms",
method: "POST",
headers: {
'xoauthtoken': oauthToken,
'xoauthtokensecret': oauthTokenSecret,
},
body: data,
types: [CREATE_DOWNLOADABLE_FORMS, CREATE_DOWNLOADABLE_FORMS_SUCCESS, CREATE_DOWNLOADABLE_FORMS_FAILURE]
}
})
}
}
但现在我需要从后端访问这些信息。我怎么做,因为我发送的不是JSON?如何恢复FormData
中的附加数据?
public function actionCreate()
{
$request = \Yii::app()->request;
// ?
}
我做了一些事情来检查发送的内容。一,
\Yii::log(json_encode($request));
将显示
{" jsonAsArray":真," enableCookieValidation":假," enableCsrfValidation":假," csrfTokenName":" YII_CSRF_TOKEN"" csrfCookie":空,"行为":[]}
使用getPost
并传递字段名称也不起作用,它是null
。 getRaw
,以防万一显示其他内容,也不会显示任何内容。它就像没有被发送一样,但是发送FormData
的代码,就像以前一样,在以前使用过并且有效。