mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-24 21:24:13 -08:00
Added method to show or download file
Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
parent
6105323877
commit
06c599cc17
|
@ -7,6 +7,7 @@ use Illuminate\Http\Response;
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||||
|
use Illuminate\Contracts\Filesystem\FileNotFoundException;
|
||||||
class StorageHelper
|
class StorageHelper
|
||||||
{
|
{
|
||||||
public static function downloader($filename, $disk = 'default') : BinaryFileResponse | RedirectResponse | StreamedResponse
|
public static function downloader($filename, $disk = 'default') : BinaryFileResponse | RedirectResponse | StreamedResponse
|
||||||
|
@ -49,11 +50,40 @@ class StorageHelper
|
||||||
'png',
|
'png',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (in_array(pathinfo($file_with_path, PATHINFO_EXTENSION), $allowed_inline)) {
|
|
||||||
|
// The file exists and is allowed to be displayed inline
|
||||||
|
if (Storage::exists($file_with_path) && (in_array(pathinfo($file_with_path, PATHINFO_EXTENSION), $allowed_inline))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decide whether to show the file inline or download it.
|
||||||
|
*/
|
||||||
|
public static function showOrDownloadFile($file, $filename) {
|
||||||
|
|
||||||
|
$headers = [];
|
||||||
|
|
||||||
|
if (request('inline') == 'true') {
|
||||||
|
|
||||||
|
$headers = [
|
||||||
|
'Content-Disposition' => 'inline',
|
||||||
|
];
|
||||||
|
|
||||||
|
// This is NOT allowed as inline - force it to be displayed as text in the browser
|
||||||
|
if (self::allowSafeInline($file) != true) {
|
||||||
|
$headers = array_merge($headers, ['Content-Type' => 'text/plain']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Everything else seems okay, but the file doesn't exist on the server.
|
||||||
|
if (Storage::missing($file)) {
|
||||||
|
throw new FileNotFoundException();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Storage::download($file, $filename, $headers);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue