当前位置:  开发笔记 > 编程语言 > 正文

在Symfony中返回一个内存文件

如何解决《在Symfony中返回一个内存文件》经验,为你挑选了1个好方法。

我试图在Symfony 控制器中返回BinaryFileResponse响应,但它要求路径File对象.问题是我通过SOAP服务获取文件,它创建了一个像这样的对象:+ + + . filenamebase64 encoded contentmimeextra stuff

我真的不想将它保存到磁盘然后创建响应...

也许我现在被蒙蔽了,但有没有办法在不创建磁盘文件的情况下发送它?

这是行动:

public function downloadAction($hash){
   $document = $this->get('soap_services.document_service')->findDocument($hash);

   return $this->file($SymfonyFileObjectOrPath, $fileName);
}

$document对象提供以下相关方法:getMime,getName,getContent.

这就是我想要用来做出响应而不创建File对象(以及它暗示的物理文件).



1> Constantin..:

你好,也许你应该考虑只是给出一个响应并强制下载"手动".

// Generate response
$response = new Response();
$filename = 'yourFileName.txt';

// Set headers
$response->headers->set('Cache-Control', 'private');
$response->headers->set('Content-type', $yourMimeType );
$response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '";');
$response->headers->set('Content-length',  strlen($yourContentString));

// Send headers before outputting anything
$response->sendHeaders();

$response->setContent( $yourContentString );

return $response;

也许这样的事情可以解决问题.你能尝试一下吗,也许可以稍微改一下?

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有