在 Laravel 4.2 中强制下载 .xls 文件

Posted

技术标签:

【中文标题】在 Laravel 4.2 中强制下载 .xls 文件【英文标题】:Force download .xls file in Laravel 4.2 【发布时间】:2016-02-04 12:53:00 【问题描述】:

我有以下路线:

Route::get('/download/id/filename', function($id, $filename)
    
        // Check if file exists in app/storage/file folder
        $file_path = storage_path() .'/orders/'.'/'.$id.'/'. $filename;
        if (file_exists($file_path))
        

            // Send Download
            return Response::download($file_path, $filename, [
                'Content-Type: application/vnd.ms-excel; charset=utf-8'
            ]);
        
        else
        
            // Error
            exit('Requested file does not exist on our server!');
        
    )->where('filename', '[A-Za-z0-9\-\_\.]+');

在 Laravel 中下载一个 excel 文件形式 /app/storage (之前上传)。 我面临的问题是下载的excel文件无法被excel读取。如果我从 FTP 下载上传的文件就可以了。我为 Content-Type 尝试了所有类型的标题,但似乎没有任何效果。 excel文件有特殊的标题吗? 非常感谢。

【问题讨论】:

【参考方案1】:

我在 CI 中使用此代码,请查找 Laravel 的帮助文件或库

$this->load->helper('download');
if(file_exists("user_files/test.txt"))
    $data = file_get_contents("user_files/test.txt");
    force_download("test.txt", $data);
else
    echo "Error";

【讨论】:

以上是关于在 Laravel 4.2 中强制下载 .xls 文件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4.2 尝试使结帐 HTTPS 导致 NotFoundHttpException

强制文件 (PDF) 在 Laravel 4 中下载

Laravel - 在存储中显示 PDF 文件而不强制下载?

Laravel - 在存储中显示 PDF 文件而不强制下载?

如何使用 Laravel 强制下载 png 文件?

使用“另存为”提示强制下载文件