Reputation:
I currently have an API where it saves the uploaded image but it hashes it, turns it into strings but what I want to do now is to retain the original name of the image in the database, not the string-type.
Image Controller:
namespace App\Http\Controllers;
use App\Models\LessonIMG;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class LessonIMGController extends Controller
{
public function FileUpload(Request $request, $id)
{
$rules = [
'file' => 'required',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json($validator->errors(), 400);
}
$uploaded_files = $request->file->store('public/uploads/');
$lesson = LessonIMG::find($id);
$lesson->lesson_image = $request->file->hashName();
$results = $lesson->save();
if ($results) {
return ["result" => "Image Added"];
} else {
return ["result" => "Image Not Added"];
}
return ["result" => $uploaded_files];
}
public function DeleteIMG($id)
{
$lesson = LessonIMG::find($id);
if (is_null($lesson)) {
return response()->json('Record not found!', 401);
}
$lesson->update(['lesson_image' => null]);
return response('Image Deleted', 200);
}
}
Any help/suggestion would be appreciated. Thank you!
Upvotes: 1
Views: 7898
Reputation: 564
simply do like this
if($file = $request->file('file')){
$file_name = $request->file->getClientOriginalName();
$data = $file->move(public_path('uploads'), $file_name);
}
Upvotes: 0
Reputation: 11
You can get the original file by using getClientOriginalName()
method:
$filenameWithExt = $files->getClientOriginalName();
Upvotes: 0
Reputation: 4271
You can get any file attribute from the request in your controller as it is documented in here. A full reference of file methods is available in here
$file_extension = $request->file->extension();
$file_mime_type = $request->file->getClientMimeType();
$original_file_name = $request->file->getClientOriginalName();
$uploaded_files = $request->file->store('public/uploads/');
Upvotes: 3