mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
WIP - this needs refactoring
We have to use Storage::get() if the filesystem is local, since the method does a file_get_contents() and the file isn’t accessible via a URL since it’s private and doesn’t live on the web root. (We do this slightly differently than Laravel out of the box) Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
parent
7a785b4952
commit
262eb79471
|
@ -38,10 +38,12 @@ class LicenseFilesController extends Controller
|
||||||
|
|
||||||
$upload_success = false;
|
$upload_success = false;
|
||||||
foreach ($request->file('file') as $file) {
|
foreach ($request->file('file') as $file) {
|
||||||
$extension = $file->getClientOriginalExtension();
|
|
||||||
$file_name = 'license-'.$license->id.'-'.str_random(8).'-'.str_slug(basename($file->getClientOriginalName(), '.'.$extension)).'.'.$extension;
|
|
||||||
|
|
||||||
$upload_success = Storage::put('private_uploads/licenses/'.$file_name, $file);
|
$file_name = 'license-'.date('Y-m-d-His').'-'.$file->getBasename().'.'.$file->getClientOriginalExtension();
|
||||||
|
|
||||||
|
|
||||||
|
$upload_success = $file->storeAs('private_uploads/licenses', $file_name);
|
||||||
|
// $upload_success = $file->storeAs('private_uploads/licenses/'.$file_name, $file);
|
||||||
|
|
||||||
//Log the upload to the log
|
//Log the upload to the log
|
||||||
$license->logUpload($file_name, e($request->input('notes')));
|
$license->logUpload($file_name, e($request->input('notes')));
|
||||||
|
@ -116,6 +118,7 @@ class LicenseFilesController extends Controller
|
||||||
public function show($licenseId = null, $fileId = null, $download = true)
|
public function show($licenseId = null, $fileId = null, $download = true)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
\Log::info('Private filesystem is: '.config('filesystems.default') );
|
||||||
$license = License::find($licenseId);
|
$license = License::find($licenseId);
|
||||||
|
|
||||||
// the license is valid
|
// the license is valid
|
||||||
|
@ -128,22 +131,37 @@ class LicenseFilesController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
$file = 'private_uploads/licenses/'.$log->filename;
|
$file = 'private_uploads/licenses/'.$log->filename;
|
||||||
\Log::debug('Checking for '.$file);
|
|
||||||
|
|
||||||
if (!Storage::exists($file)) {
|
|
||||||
return response('File '.$file.' not found on server', 404)
|
if (Storage::missing($file)) {
|
||||||
|
\Log::debug('NOT EXISTS for '.$file);
|
||||||
|
\Log::debug('NOT EXISTS URL should be '.Storage::url($file));
|
||||||
|
return response('File '.$file.' ('.Storage::url($file).') not found on server', 404)
|
||||||
->header('Content-Type', 'text/plain');
|
->header('Content-Type', 'text/plain');
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem
|
||||||
|
// won't work, as they're not accessible via the web
|
||||||
|
if (config('filesystems.default') == 'local') {
|
||||||
|
\Log::debug('The private filesystem is local');
|
||||||
|
return Response::make(Storage::get($file));
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if ($download != 'true') {
|
||||||
|
if ($contents = file_get_contents(Storage::url($file))) {
|
||||||
|
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
|
||||||
|
}
|
||||||
|
return JsonResponse::create(["error" => "Failed validation: "], 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Storage::download($file);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($download != 'true') {
|
|
||||||
if ($contents = file_get_contents(Storage::url($file))) {
|
|
||||||
return Response::make(Storage::url($file)->header('Content-Type', mime_content_type($file)));
|
|
||||||
}
|
|
||||||
return JsonResponse::create(["error" => "Failed validation: "], 500);
|
|
||||||
}
|
|
||||||
return Storage::download($file);
|
|
||||||
}
|
}
|
||||||
return redirect()->route('hardware.index')->with('error', trans('admin/licenses/message.does_not_exist', ['id' => $fileId]));
|
return redirect()->route('license.index')->with('error', trans('admin/licenses/message.does_not_exist', ['id' => $fileId]));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue