从控制器下载时,Symfony正在增加文件大小

从控制器下载时,Symfony正在增加文件大小,symfony,vichuploaderbundle,Symfony,Vichuploaderbundle,我用VichUploaderBundle上传了一个图像,我返回的图像文件如下: /** * Show license image. * * @param Request $request * @return Response */ public function showImageAction(Request $request,$id) { $em = $this->getDoctrine()->getManager(); $license = $em-&g

我用VichUploaderBundle上传了一个图像,我返回的图像文件如下:

/**
 * Show license image.
 *
 * @param Request $request
 * @return Response
 */
public function showImageAction(Request $request,$id)
{
    $em = $this->getDoctrine()->getManager();
    $license = $em->getRepository('MyCarBundle:License')->findOneById($id);

    $fileName = $license->getFrontName();
    $user = $this->getUser();
    $contents = '';
    $filePath = __DIR__ . '/../../../../app/uploads/licenses/'. $user->getId().'/'.$fileName;


    $response = new Response();
    $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $fileName);
    $response->headers->set('Content-Disposition', $disposition);
    $response->headers->set('Content-Type', 'image/jpg');
    $response->setContent(file_get_contents($filePath));

    return $response;
}
在html中,我试图显示图像,就像这样

<img class="img-fluid w-100 u-block-hover__main--zoom-v1" src="{{ path('license_show_image',{'id':license.id}) }}" alt="Image Description">
有人知道发生了什么事吗

更新:

Symfony在下载时将文件大小增加约700kb。上传后,它似乎有适当的文件大小,但下载增加了文件大小。这是怎么回事

更新2:

以下是标题:

Request URL:http://localhost/app-temp/web/app_dev.php/account/license/2/show-image
Request Method:GET
Status Code:200 OK
Remote Address:[::1]:80
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Cache-Control:no-cache, private
Connection:Keep-Alive
Content-Disposition:inline; filename="ODL_Eng_Full_Back.jpg"
Content-Type:image/jpg
Date:Tue, 17 Oct 2017 23:31:02 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.27 (Unix) PHP/7.1.8
Transfer-Encoding:chunked
X-Debug-Token:0e53c1
X-Debug-Token-Link:http://localhost/app-temp/web/app_dev.php/_profiler/0e53c1
X-Powered-By:PHP/7.1.8
Request Headers
view source
Accept:image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Cookie:__atuvc=54%7C42; _ga=GA1.1.1906437920.1508087850; _gid=GA1.1.1258608977.1508087850; PHPSESSID=iuhk0pr0oqtaje5371fp7q7vfk
Host:localhost
Referer:http://localhost/app-temp/web/app_dev.php/account/creditcards/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

您可以使用
BinaryFileResponse
( )比如:


您可以使用
BinaryFileResponse
( )比如:


编辑:HTTP响应似乎是正确的

既然您使用的是VichUploaderBundle,为什么不直接使用它的助手呢

<img src="{{ vich_uploader_asset(license, 'frontName') }}" alt="{{ license.frontName }}">

编辑:HTTP响应似乎是正确的

既然您使用的是VichUploaderBundle,为什么不直接使用它的助手呢

<img src="{{ vich_uploader_asset(license, 'frontName') }}" alt="{{ license.frontName }}">


im收到一个错误:无法在BinaryFileResponse实例上设置内容。@apfz如果使用
BinaryFileResponse
,则不能使用
setContent()
方法。它会自动执行您需要的操作(例如读取和提供文件)。忘记
内容类型
标题吧,如果您喜欢
内联
附件
文件,那么您唯一需要担心的就是
内容配置
标题。当我再次查看此文件时,我发现了问题。由于我没有设置setContent,我最初对您的评论感到困惑。当查看错误堆栈时,会发现vihuvac/htmlcompressor包正在干扰响应:S。感谢您的努力!我发现一个错误:无法在BinaryFileResponse实例上设置内容。@apfz如果使用
BinaryFileResponse
,则不能使用
setContent()
方法。它会自动执行您需要的操作(例如读取和提供文件)。忘记
内容类型
标题吧,如果您喜欢
内联
附件
文件,那么您唯一需要担心的就是
内容配置
标题。当我再次查看此文件时,我发现了问题。由于我没有设置setContent,我最初对您的评论感到困惑。当查看错误堆栈时,会发现vihuvac/htmlcompressor包正在干扰响应:S。感谢您的努力!很抱歉,我错过了这一点,你的意思是图像文件夹不公开,你希望动态呈现图像内容?好吧,你的回答似乎是正确的,尽管正如G1.3所建议的,BinaryFileResponse可能更容易;您确定您的图片本身是有效的
jpg
文件(例如不是
jpeg
)吗?我不确定这是否有区别。。。您试图转储什么
strlen(文件获取内容($filePath))
?它和你的物理文件大小一样吗?看不出原因。。。你所有的照片都是这样吗?可能是Web服务器配置的问题(例如gzip?),请添加控制器返回的HTTP响应的标题好吗?例如内容长度、内容类型等?在这里看不到任何错误。。。可能只是
传输编码:chunked
,这会指出Web服务器的配置错误,但仍然。。。您是否可以使用symfony的内置Web服务器进行测试<代码>php bin/控制台服务器:开始-v好的。。。这是所有上传文件的重复,还是仅此特殊文件?(可能由于任何原因而损坏)并且您是否尝试过使用
BinaryFileResponse
(不手动设置内容)?很抱歉,我没有注意到这一点,您的意思是图像文件夹不公开,您希望动态呈现图像内容?好的,您的回答似乎是正确的,尽管如G1.3所示,BinaryFileResponse可能更容易;您确定您的图片本身是有效的
jpg
文件(例如不是
jpeg
)吗?我不确定这是否有区别。。。您试图转储什么
strlen(文件获取内容($filePath))
?它和你的物理文件大小一样吗?看不出原因。。。你所有的照片都是这样吗?可能是Web服务器配置的问题(例如gzip?),请添加控制器返回的HTTP响应的标题好吗?例如内容长度、内容类型等?在这里看不到任何错误。。。可能只是
传输编码:chunked
,这会指出Web服务器的配置错误,但仍然。。。您是否可以使用symfony的内置Web服务器进行测试<代码>php bin/控制台服务器:开始-v好的。。。这是所有上传文件的重复,还是仅此特殊文件?(可能由于任何原因而损坏)并且您是否尝试过改用
BinaryFileResponse
(不手动设置内容)?
<img src="{{ vich_uploader_asset(license, 'frontName') }}" alt="{{ license.frontName }}">