使用 PHP 在 Safari 浏览器中下载文件效果不佳
Download file not working well in safari with PHP
以下代码适用于所有浏览器,但扩展程序未在 safari 中显示。
可能是内容类型问题?
public function CheckRoutingURLAction($filename){
$filename = 'https://media3.s-nbcnews.com/j/newscms/2019_41/3047866/191010-japan-stalker-mc-1121_06b4c20bbf96a51dc8663f334404a899.fit-2000w.JPG';
try{
$content = file_get_contents($filename, true, stream_context_create(array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
),)));
}
catch (\Throwable $e){
$logger = $this->get('logger');
$logger->err($e->getMessage());
throw new NotFoundHttpException('Page not found');
}
$response = new Response();
$response->headers->set('Content-Type', 'mime/type');
$response->headers->set('Content-Disposition',
'attachment;filename=Noman.png'));
$response->setContent($content);
return $response;
}
请尝试此代码。我一直用这个来下载外部文件。
$filename = 'https://media3.s-nbcnews.com/j/newscms/2019_41/3047866/191010-japan-stalker-mc-1121_06b4c20bbf96a51dc8663f334404a899.fit-2000w.JPG';
$file = basename($filename);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$file");
header("Content-Transfer-Encoding: binary");
readfile($filename);
我得到了答案,它适用于我所有的浏览器:)
$response->headers->set('Content-Description',' File Transfer');
$response->headers->set('Content-Disposition',' attachment; filename=' . $quoted);
$response->headers->set('Content-Transfer-Encoding',' binary');
$response->headers->set('Connection',' Keep-Alive');
$response->headers->set('Expires',' 0');
$response->headers->set('Cache-Control',' must-revalidate, post-check=0, pre-check=0');
$response->headers->set('Pragma',' public');
$response->headers->set('Content-Length', $size);
$response->headers->set('Content-Type', mime_content_type($filename));
$response->setContent($content);
return $response;
以下代码适用于所有浏览器,但扩展程序未在 safari 中显示。 可能是内容类型问题?
public function CheckRoutingURLAction($filename){
$filename = 'https://media3.s-nbcnews.com/j/newscms/2019_41/3047866/191010-japan-stalker-mc-1121_06b4c20bbf96a51dc8663f334404a899.fit-2000w.JPG';
try{
$content = file_get_contents($filename, true, stream_context_create(array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
),)));
}
catch (\Throwable $e){
$logger = $this->get('logger');
$logger->err($e->getMessage());
throw new NotFoundHttpException('Page not found');
}
$response = new Response();
$response->headers->set('Content-Type', 'mime/type');
$response->headers->set('Content-Disposition',
'attachment;filename=Noman.png'));
$response->setContent($content);
return $response;
}
请尝试此代码。我一直用这个来下载外部文件。
$filename = 'https://media3.s-nbcnews.com/j/newscms/2019_41/3047866/191010-japan-stalker-mc-1121_06b4c20bbf96a51dc8663f334404a899.fit-2000w.JPG';
$file = basename($filename);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$file");
header("Content-Transfer-Encoding: binary");
readfile($filename);
我得到了答案,它适用于我所有的浏览器:)
$response->headers->set('Content-Description',' File Transfer');
$response->headers->set('Content-Disposition',' attachment; filename=' . $quoted);
$response->headers->set('Content-Transfer-Encoding',' binary');
$response->headers->set('Connection',' Keep-Alive');
$response->headers->set('Expires',' 0');
$response->headers->set('Cache-Control',' must-revalidate, post-check=0, pre-check=0');
$response->headers->set('Pragma',' public');
$response->headers->set('Content-Length', $size);
$response->headers->set('Content-Type', mime_content_type($filename));
$response->setContent($content);
return $response;