Php 如何从Symfony3下载DOCX文档?

Php 如何从Symfony3下载DOCX文档?,php,symfony,download,docx,Php,Symfony,Download,Docx,我有一个Symfony控制器可以上传.docx文件,还有一个可以下载 下载文件的我的symfony控制器如下所示: public function getDocumentationAction(Request $request, $uriFile) { $filename = $uriFile; $path = $this->getParameter('documents_directory').'/'.$filename; $file = file_get_

我有一个Symfony控制器可以上传
.docx
文件,还有一个可以下载

下载文件的我的symfony控制器如下所示:

public function getDocumentationAction(Request $request, $uriFile) {


    $filename = $uriFile;
    $path = $this->getParameter('documents_directory').'/'.$filename;

    $file = file_get_contents($path);

    $response = new Response($file);
    $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
    $response->headers->set('Content-Description', 'File Transfer');
    $response->headers->set('Content-Disposition', 'attachment; filename="'.$filename.'"');
    return $response;

}
问题是下载文件时,文件的格式不正确。例如,如果我上传一个包含
test
word的docx,当我下载这个文件时,我会得到一个奇怪的
.docx
,开头是:

PK!›¸ï7f[内容类型].xml™™˙8∂H•<代码>Ï
XıKˆÚ˙˚nDU A*YÙYÏYÏiÔJ÷/z,“Ω”nV≤è……K~œ≤ааm-˙j0ŸHuªT≤9bx—必须返回二进制响应。 您有两种选择:

$fileName = 'your_docx.docx';
$path = $this->getParameter('documents_directory').'/'.$filename;
$content = file_get_contents($path);

$response = new Response();
$response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
$response->headers->set('Content-Disposition', 'attachment;filename="'.$filename);
$response->setContent($content);
return $response;
见:

另一种方法是:

    $fileName = 'your_docx.docx';
    $temp_file = $this->getParameter('documents_directory').'/'.$filename;
    $response = new BinaryFileResponse($temp_file);
    $response->setContentDisposition(
        ResponseHeaderBag::DISPOSITION_ATTACHMENT,
        $fileName
    );

    return $response;
可在此处找到: