我正在通过我的网站强制下载图像。
\n\n强制下载在 Apache/Windows 开发机器上运行良好。
\n\n然而,当它在我的 Linux Web 服务器上运行时,它会将垃圾字符推送到屏幕上。
\n\ne.g. \xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbdJFIF\xef\xbf\xbd\xef\xbf\xbdH\xef\xbf\xbdH\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd6Exif\xef\xbf\xbd\xef\xbf\xbdMM\xef\xbf\xbd*\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n
Run Code Online (Sandbox Code Playgroud)\n\nInternet Explorer 7 - 在页面中显示图像
\n\n$fileName = basename($filePath);\n$fileSize = filesize($filePath);\n\n\n// Output headers.\nheader("Cache-Control: private");\nheader("Content-Type: Image/jpeg");\nheader("Content-Length: ".$fileSize);\nheader("Content-Disposition: attachment; filename=".$fileName);\n\n\n// Output file.\nreadfile ($filePath); \nexit();\n
Run Code Online (Sandbox Code Playgroud)我的实时服务器上可能存在哪些差异会导致其崩溃?
\n向stillstand致敬(和+1),他指出使用fifo,但我想我应该在这里提供一个示例来提供帮助。这个例子需要安装 fifo 扩展,并且已经被破解并从我的其他一些代码中稍作修改。
$filename = 'blarg.jpg';
$filepath = '/foo/bar/blarg.jpg';
$finfo = new finfo(FILEINFO_MIME);
$mime = $finfo->file($file);
// Provide a default type in case all else fails
$mime = ($mime) ? $mime : 'application/octet-stream';
header('Pragma: public');
header('Content-Transfer-Encoding: binary');
header('Content-type: ' . $mime);
header('Content-Length: ' . filesize($filepath));
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Content-transfer-encoding: 8bit');
header('Expires: 0');
header('Pragma: cache');
header('Cache-Control: private');
Run Code Online (Sandbox Code Playgroud)