Моя проблема в том, как создать подходящий путь, когда мне нужно сохранить изображение.Я пробовал учебное пособие, и предыдущее вмешательство SO отвечало на вопросы, но не могло применить предложенные решения.Я использую вмешательство в изображение в Laravel.
Мой текущий путь:
$filenameWithExtThumb = $request->file("thumbnail")->getClientOriginalName();
$filenameThumb = pathinfo($filenameWithExtThumb, PATHINFO_FILENAME);
$extensionThumb = $request->file("thumbnail")->getClientOriginalExtension();
$fileNameToStoreThumb = $filenameThumb."_".time().".".$extensionThumb;
$image_resize = Image::make($request->file("thumbnail")->getRealPath());
$image_resize->resize(320, 240);
$pathThumb = $request->file("thumbnail")->storeAs("public/".auth()->user()->name."'s Thumbnails", $fileNameToStoreThumb);
, который отлично работает, если я просто храню его без изменения размера.Если я использую
$pathThumb = $image_resize->storeAs("public/".auth()->user()->name."'s Thumbnails", $fileNameToStoreThumb);
, это не сработает.Я также попробовал:
$image_resize->save("/public/storage/".auth()->user()->name."'s Thumbnails");
, что тоже не работает.и
$pathThumb = $image_resize->save("/public/storage/".auth()->user()->name."'s Thumbnails");
Я хотел бы использовать это:
$pathThumb = $request->file("thumbnail")->storeAs("public/".auth()->user()->name."'s Thumbnails", $fileNameToStoreThumb);
с $image_resize
.Возможно ли это и как?
Мой путь: "public / storage" .auth () -> user () -> name. "Миниатюры", $ fileNameToStoreThumb Пример:public/storage/ -> Johnny's Thumbnails -> nameOfTheFile.jpg
Edit1: Решено путем создания пути следующим образом: $pathThumb = $image_resize->save(public_path("storage/".auth()->user()->name."'s Thumbnails/".$fileNameToStoreThumb));
Теперь я хочу удалить предыдущий эскиз, за исключением случаев, когда это не nothumbnail.jpg ".
if ($request->hasFile('thumbnail')) {
if($video->thumbnail==="../nothumbnail.jpg"){
$video->thumbnail = $fileNameToStoreThumb;
}
if($video->thumbnail!=="../nothumbnail.jpg"){
Storage::delete("public/storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail);
$video->thumbnail = $fileNameToStoreThumb;
}
}
else{
if($video->thumbnail==="../nothumbnail.jpg"){
$video->thumbnail = "../nothumbnail.jpg";
}
if($video->thumbnail!=="../nothumbnail.jpg"){
Storage::delete("public/storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail);
$video->thumbnail = "../nothumbnail.jpg";
}
}
И снова это проблема пути: (
Edit2: Решение для редактирования1: после многих часов я не нашел ошибку, так как ятак сильно изменил мой оригинальный код, чтобы я не смог найти его на всю жизнь. Поэтому я случайно разработал решение совершенно случайного характера:
$filenameWithExtThumb = null;
$filenameThumb = null;
$extensionThumb = null;
$fileNameToStoreThumb = null;
$image_resize = null;
$pathThumb = null;
if($request->hasFile("thumbnail")){
$filenameWithExtThumb = $request->file("thumbnail")->getClientOriginalName();
$filenameThumb = pathinfo($filenameWithExtThumb, PATHINFO_FILENAME);
$extensionThumb = $request->file("thumbnail")->getClientOriginalExtension();
$fileNameToStoreThumb = $filenameThumb."_".time().".".$extensionThumb;
$image_resize = Image::make($request->file("thumbnail")->getRealPath());
$image_resize->resize(320, 240);
$pathThumb = $image_resize->save(public_path("storage/".auth()->user()->name."'s Thumbnails/".$fileNameToStoreThumb));
if($video->thumbnail!=="../nothumbnail.jpg"){
unlink(public_path("storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail));
$video->thumbnail = $fileNameToStoreThumb;
}
if($video->thumbnail==="../nothumbnail.jpg"){
$video->thumbnail = $fileNameToStoreThumb;
}
}
else{
if($video->thumbnail!=="../nothumbnail.jpg"){
unlink(public_path("storage/".auth()->user()->name."'s Thumbnails/".$video->thumbnail));
$video->thumbnail = "../nothumbnail.jpg";
}
if($video->thumbnail==="../nothumbnail.jpg"){
$video->thumbnail = "../nothumbnail.jpg";
}
}
Хотя я не использовал фасад фасада, но vanilla php unlinkдля удаления файла. Можно ли использовать встроенные возможности Laravel вместо ванили?