创建下载文件 API 时错误的 Mimetype 或扩展名

问题描述 投票:0回答:1

我正在开发一个 Laravel 项目,并将其用作 RESTful API。

所以我有一个功能,用户可以下载我从azure blob存储存储的文件,该文件位于excel文件中,有时是csv,我已经成功创建了下载功能,但是当我尝试打开该文件时,它会显示类似的内容这个

The Error message on excel

我用这个方法来获取文件的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'

那么有什么方法可以让我的响应给出相同的文件,并且不会对下载的文件产生扩展名错误?

php laravel api rest download
1个回答
0
投票

所以我发现问题的原因是由于 Laravel/Symfony 由于某种原因没有正确清理输出缓冲区,您可以在这里找到解决方案:

http://simpledeveloper.com/how-to-fix-laravel-response-image-download-in-laravel/

Laravel 5 文件下载无效

© www.soinside.com 2019 - 2024. All rights reserved.