我正在开发一个 Laravel 项目,并将其用作 RESTful API。
所以我有一个功能,用户可以下载我从azure blob存储存储的文件,该文件位于excel文件中,有时是csv,我已经成功创建了下载功能,但是当我尝试打开该文件时,它会显示类似的内容这个
我用这个方法来获取文件的MIME类型
$mimeType = finfo_buffer(finfo_open(FILEINFO_MIME_TYPE), $file);
它给了我这个 mime 类型“application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”,然后我将其放入响应标头中,如下所示
$headers = [
'Content-Type' => $mimeType,
'Content-Description' => 'File Transfer',
'Content-Disposition' => "attachment; filename=" . $fileName,
'filename' => $fileName
];
但是问题发生了,我尝试打开正确文件的属性,它是这样的
'内容类型':'application/vnd.ms-excel.sheet.macroEnabled.12'
那么有什么方法可以让我的响应给出相同的文件,并且不会对下载的文件产生扩展名错误?
所以我发现问题的原因是由于 Laravel/Symfony 由于某种原因没有正确清理输出缓冲区,您可以在这里找到解决方案:
http://simpledeveloper.com/how-to-fix-laravel-response-image-download-in-laravel/