Php yii2xml文件响应

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'

我有一个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', '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
不允许使用,应该避免使用