下载文件显示未知字符

时间:2018-05-24 08:35:50

标签: php laravel

我试图在这样的页面上建立下载链接:

<a href="uploads/testfolder/excelfile.xlsx" target="_blank">Download here</a>`

当我点击该链接时,它会显示如下图所示的页面,该页面也会在同一页面中查看。

enter image description here

应该在新窗口中下载,因为我放了target="_blank"。但奇怪的是,当我尝试右键单击并在新窗口中打开时,它会自动提示我下载文件。

3 个答案:

答案 0 :(得分:0)

您需要为要正确下载的文件返回标头响应。

创建路线:

Route::get('/download/{$filename}', [
    'as' => 'download-file',
    'uses' => 'YourController@download',
]);

在您的控制器中:

public function download($filename)
{
    $path =  public_path('/yout/path/');
    $headers = [
              'Content-Type' => 'xlsx',
           ];

    return response()->download($path, $filename , $headers);
}

在您的视图中:

<a href="{{route('download-file', filename.xlsx)}}" target="_blank">Download</a>

答案 1 :(得分:0)

您可以使用锚点上的HTML5 download属性在您点击链接时强制在浏览器中下载。

<a href="uploads/testfolder/excelfile.xlsx" target="_blank" download>Download here</a>

答案 2 :(得分:0)

尝试这个

<a href="{{url('/')}}/uploads/testfolder/excelfile.xlsx" target="_blank" download>Download here</a>

或更改浏览器。此代码在我的计算机上下载未在新窗口中打开的文件。