0

コントローラーに次のコードがあります。

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$file = 'myfile.html';
$contentType = finfo_file($finfo, $file);
finfo_close($finfo);

$response = new Response();
$response->headers->set('Content-Description', 'File Transfer');
$response->headers->set('Content-Type', $contentType);
$response->headers->set('Content-Disposition', 'attachment; filename='.basename($file));
$response->headers->set('Content-Transfer-Encoding', 'binary');
$response->headers->set('Expires', '0');
$response->headers->set('Cache-Control', 'must-revalidate');
$response->headers->set('Pragma', 'public');
$response->headers->set('Content-Length', filesize($file));

$response->setContent(file_get_contents($file));
$response->send();
return $response;

このコードを開発用コンピューター (PHP 5.3.15 を搭載した Mac) で実行すると、必要なファイルとそのコンテンツが取得されます。しかし、テスト サーバー (PHP 5.3.10 を使用した Ubuntu 12.04) で実行すると、ファイルは取得されますが、コンテンツは 2 倍になります (1 つのファイルで 2 倍のファイルが取得されます)。

私は$contentType = 'application/octet-stream'; 何が間違っているのですか?

4

1 に答える 1

2

これらの 2 つの行は同じことを行うと思います (Symfony で)

$response->send();
return $response;

$response->send() 行を削除することをお勧めします。

于 2012-12-25T18:16:25.537 に答える