2017-04-12 10 views
0

.docx 파일을 업로드하고 다른 파일을 다운로드하는 Symfony 컨트롤러가 있습니다. 파일을 다운로드 할 수Symfony3에서 DOCX 문서를 다운로드하는 방법은 무엇입니까?

내 심포니 컨트롤러는 다음과 같습니다

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; 

} 

문제는 파일이 다운로드 될 때, 파일의 형식이 올바르지 않은 것입니다. 예를 들어, 나는이 파일을 다운로드 할 때, I로 시작하는 이상한 .docx를 얻을 test 단어를 포함하는 DOCX을 업로드하면!

PK> ¸ï7f [CONTENT_TYPES] († ¥ TÀn¬0ºWÍ ¢ .XML? 대바 ° á ™™ ˙8∂H • Ï XıKˆÚ˙˚nDUA*Â)YÔÃÏσɗ⁄öl 1iÔJ÷/z,'Ω“nV≤è…K~œ≤Ѭ)aºÉím ±—˙j0ŸHuªT≤9bx‡<…9Xë ¿Q•Ú— §◊8„A»O1~€Î›qÈÇ√k6<A%≥Á5}fi*â ÀΣkÆíâåñI를) _ : IE %의 FL1 'ŸúIs "나는 예를 들어 사용하여 PDF로이 이상한 DOCX 파일을 변환하면

이 : https://online2pdf.com/en/convert-docx-to-pdf을 나는 test와 PDF를 얻을 수 내부의 단어이므로 정보가 포함되어 있지만 제대로 표시되지 않습니다.

내 Symfony 업로드 컨트롤러가 서버에서 파일에 액세스하여 내용을 제대로 볼 수 있으므로 제대로 작동하는 것 같습니다.

답변

0

이진 응답을 반환해야합니다. 이 두 번 선택할 수 있습니다

$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; 

참조 : https://stackoverflow.com/a/30254080/6635967

다른 방법은 다음과 같습니다

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

    return $response; 

여기 찾았 http://ourcodeworld.com/articles/read/361/how-to-create-a-word-file-with-php-in-symfony-3