## 文件下載(`V5.1.21+`)
從`5.1.21+`版本開始,支持文件下載功能,可以更簡單的讀取文件進行下載操作,支持直接下載輸出內容。
你可以在控制器的操作方法中添加如下代碼:
~~~
public function download()
{
$download = new \think\response\Download('image.jpg');
return $download->name('my.jpg');
// 或者使用助手函數完成相同的功能
// download是系統封裝的一個助手函數
return download('image.jpg', 'my.jpg');
}
~~~
訪問`download`操作就會下載命名為`my.jpg`的圖像文件。
> 下載文件的路徑是服務器路徑而不是URL路徑,如果要下載的文件不存在,系統會拋出異常。
下載文件名可以省略后綴,會自動判斷(后面的代碼都以助手函數為例)
~~~
public function download()
{
// 和上面的下載文件名是一樣的效果
return download('image.jpg', 'my');
}
~~~
如果需要設置文件下載的有效期,可以使用
~~~
public function download()
{
// 設置300秒有效期
return download('image.jpg', 'my')->expire(300);
}
~~~
除了`expire`方法外,還支持下面的方法:
| 方法 | 描述 |
| --- | --- |
| name | 命名下載文件 |
| expire | 下載有效期 |
| isContent | 是否為內容下載 |
| mimeType | 設置文件的mimeType類型 |
助手函數提供了內容下載的參數,如果需要直接下載內容,可以在第三個參數傳入`true`:
~~~
public function download()
{
$data = '這是一個測試文件';
return download($data, 'test.txt', true);
}
~~~