I have a FileController, a file.blade.php and 3 routes.
3 routes:
//this is running a method to store my files that I've uploaded
Route::post('/file-upload/', '[email protected]');
//this is returning the file-upload page with the files laid out in a foreachloop
Route::get('/file-upload/', '[email protected]');
//this route will fire when the user clicks to download a file on the file-upload page
Route::get('/file-upload/download/{file}', '[email protected]');
uploading a file will trigger this method:
public function store(Request $request)
{
$files = Files::all();
if($request->hasFile('file') && $request->file('file')->isValid()){
//
//storing the input field with the name "file" in $file.
$file = $request->file('file');
//using laravel method to get filename from the inputfield, in case we add a feature to allow the user to provide the name
$originalName = $file->getClientOriginalName();
//storing file in public/upload saving as $originalName
$fileLoc = $request->file->storeAs('public/upload', $originalName);
//getting mimetype from the file stored with the class storage using method mimetype of the file above
$mimeType = Storage::mimeType($fileLoc);
//creating a new file entry
$entry = new Files();
//storing mimetype of file
$entry->mime = $mimeType;
//storing filename of file
$entry->original_filename = $originalName;
//storing name as ogname, but may change to allow users to name file
$entry->name = $originalName;
//saving and making entry to the DB
$entry->save();
}else{
//if statement checks if file is a file and is valid, otherwise no file to upload
return "Failed to upload";
}
return back(); compact('files');
}
When a user clicks on a file they uploaded:
public function download($file)
{
$url = Storage::url($file);
$download=DB::table('files')->get();
return Storage::download($url);
// view("files.download", compact('$download'));
}
I have confirmed via sequel pro that this works, the entry is recorded in the database, in the public/upload directory in public/storage/upload/(filesstoredhere), and displayed in the view.
the view file.blade.php (relevance to question, took out elements not applicable to issue):
I'm not sure if I should be using in the href element the "download" property with the $file->name. This seems to download the file, but it will say that the file "filename.jpg" could not be opened because it is empty.
I tried using the download function but I just get the error:
(1/1) BadMethodCallException
Call to undefined method League\Flysystem\Filesystem::download
Any help would be appreciated, if you need more info let me know.
Download a file from the database
I have a FileController, a file.blade.php and 3 routes.
3 routes:
uploading a file will trigger this method:
When a user clicks on a file they uploaded:
I have confirmed via sequel pro that this works, the entry is recorded in the database, in the public/upload directory in public/storage/upload/(filesstoredhere), and displayed in the view.
the view file.blade.php (relevance to question, took out elements not applicable to issue):
I'm not sure if I should be using in the href element the "download" property with the $file->name. This seems to download the file, but it will say that the file "filename.jpg" could not be opened because it is empty.
I tried using the download function but I just get the error:
Any help would be appreciated, if you need more info let me know.
Thanks!