我正在做一个laravel项目,并将其作为一个REST风格的API。
所以我有一个功能,用户可以下载我从Azure Blob存储的文件,该文件是在Excel文件,有时CSV,我已经成功地创建了下载功能,但当我尝试打开文件时,它会说这样的话
x1c 0d1x的数据
我使用此方法获取文件的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
];
型
但随后问题发生了,我试图打开CORRECT文件的属性,它是这样说的
'Content-type':'application/vnd.ms-excel.sheet.macroEnabled.12'
那么有没有什么方法可以让我的React给相同的文件,产生没有错误的扩展到下载的文件?
1条答案
按热度按时间ctrmrzij1#
所以我发现问题的原因是由于Laravel/Symfony由于某种原因没有正确清理输出缓冲区,你可以在这里找到解决方案:
http://simpledeveloper.com/how-to-fix-laravel-response-image-download-in-laravel/
Laravel 5 file downloads invalid的
在我的例子中,我是这样实现的:
字符串