Php yii2xml文件响应
我有一个xml文件,我想通过http响应在api操作中发送它,并使用Content Type=multipart/form data 现在我正在使用Content Type=text/xml,我的操作如下Php yii2xml文件响应,php,yii2,response,multipartform-data,Php,Yii2,Response,Multipartform Data,我有一个xml文件,我想通过http响应在api操作中发送它,并使用Content Type=multipart/form data 现在我正在使用Content Type=text/xml,我的操作如下 \Yii::$app->response->format = \yii\web\Response::FORMAT_RAW; $headers = \Yii::$app->response->headers; $headers->add('Content-Type'
\Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
$headers = \Yii::$app->response->headers;
$headers->add('Content-Type', 'text/xml');
$xml = file_get_contents($filePath);
return $xml;
但这并不是我想要的。如何将此响应更改为Content Type=multipart/form data?您可以通过自定义components属性
contentType
以使用自定义值,然后在运行时设置自定义格式化程序,而不是像以前那样手动使用echo
,来更改响应的内容类型2.0.14
Yii不允许在控制器中回音,因此不应遵循。此外,使用此方法将自动为内容类型
标题设置字符集
您应该按照常规方法执行以下操作
public function actionResponder()
{
$filePath = $_SERVER['DOCUMENT_ROOT'] . '/assets/test.xml';
$xml = new XmlResponseFormatter();
$xml->contentType = 'multipart/form-data';
Yii::$app->response->format='xml';
Yii::$app->response->formatters['xml']=$xml;
$xmlFile = file_get_contents($filePath);
return $xmlFile;
}
您可以通过以下方式发送带有自定义内容类型的响应:
Yii::$app->response->format = Response::FORMAT_RAW;
Yii::$app->response->headers->add('Content-Type', 'multipart/form-data');
Yii::$app->response->content = file_get_contents($filePath);
return Yii::$app->response;
为什么要返回多部分表单数据作为响应?那应该是输入法吗text/html
,text/xml
或application/json
这是我的api操作的技术要求。Text/xml看起来更自然,答案确实回答了您的问题吗?请参阅我发布的答案,您不应该在控制器中使用echo
,因为2.0.14
不允许使用,应该避免使用