В настоящее время у меня есть API, в котором он сохраняет загруженное изображение, но хеширует его, превращает в строки, но сейчас я хочу сохранить исходное имя изображения в базе данных, а не строковый тип.
Контроллер изображений:
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);
}
}
Будем признательны за любую помощь/предложение. Спасибо!
Извините, что не смог помочь вам с вашей реальной проблемой, но я могу поделиться с вами некоторыми советами по улучшению кода: 1) Не делайте
Validator::make()
, а затемif ($validator->fails())....
, вы можете просто сделатьValidator::validate(...)
и это автоматически выдаст исключение, возвращающееся кview
сerrors
в индексеerrors
, и будет использовать422
в качестве кода ошибки вместо400
(способ Laravel). 2) Для обоих методов, использующих$id
, вы можете воспользоваться преимуществамиImplicit Binding
, поэтому нет необходимости вif (is_null(...)) return
.К вашему сведению, строка: return ["result" => $uploaded_files]; недоступен из-за ваших возвратов в последнем операторе if.
О, не видел, спасибо!