Changeset View
Changeset View
Standalone View
Standalone View
src/app/Backends/Storage.php
Show First 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | class Storage | ||||
* | * | ||||
* @param \App\Fs\Item $file File object | * @param \App\Fs\Item $file File object | ||||
* | * | ||||
* @throws \Exception | * @throws \Exception | ||||
*/ | */ | ||||
public static function fileDownload(Item $file): StreamedResponse | public static function fileDownload(Item $file): StreamedResponse | ||||
{ | { | ||||
$response = new StreamedResponse(); | $response = new StreamedResponse(); | ||||
$props = $file->getProperties(['name', 'size', 'mimetype']); | $props = $file->getProperties(['name', 'size', 'mimetype']); | ||||
// Prepare the file name for the Content-Disposition header | // Prepare the file name for the Content-Disposition header | ||||
$extension = pathinfo($props['name'], \PATHINFO_EXTENSION) ?: 'file'; | $extension = pathinfo($props['name'], \PATHINFO_EXTENSION) ?: 'file'; | ||||
$fallbackName = str_replace('%', '', Str::ascii($props['name'])) ?: "file.{$extension}"; | $fallbackName = str_replace('%', '', Str::ascii($props['name'])) ?: "file.{$extension}"; | ||||
$disposition = $response->headers->makeDisposition('attachment', $props['name'], $fallbackName); | $disposition = $response->headers->makeDisposition('attachment', $props['name'], $fallbackName); | ||||
$response->headers->replace([ | $response->headers->replace([ | ||||
▲ Show 20 Lines • Show All 219 Lines • Show Last 20 Lines |