thinkphp6返回文件,前端可下载
时间: 2024-02-28 18:52:39 浏览: 67
在 ThinkPHP6 中,你可以使用`Filesystem`类的`readStream`方法读取指定文件的内容,并将内容返回给前端。然后在前端,你可以使用`a`标签的`download`属性将文件下载到本地。以下是一个简单的示例代码:
```
use think\facade\Filesystem;
$filePath = '/path/to/file';
$fileName = 'file.txt';
$fileStream = Filesystem::disk('public')->readStream($filePath);
return response()->data($fileStream)->header([
'Content-Type' => 'application/octet-stream',
'Content-Disposition' => 'attachment;filename='.$fileName
]);
```
这里假设使用的是`public`磁盘,并且要返回的文件路径为`/path/to/file`,文件名为`file.txt`。`readStream`方法会返回一个文件流,然后我们使用`response`函数将其封装为响应对象,并设置响应头为`application/octet-stream`,表示这是一个二进制文件,同时设置`Content-Disposition`头为`attachment`,表示要下载该文件,并指定文件名为`$fileName`。
在前端,你可以使用以下代码将文件下载到本地:
```
<a href="/path/to/download/file" download="file.txt">下载文件</a>
```
这里的`/path/to/download/file`应该替换为你的下载文件路径。如果下载文件路径不是一个完整的 URL,那么它会相对于当前页面的 URL 进行解析。`download`属性指定要下载的文件名,这里应该和后端设置的文件名一致。
阅读全文