【发布时间】:2020-01-25 02:13:30
【问题描述】:
我的问题是当我需要保护图像时如何创建合适的路径。我尝试了教程,之前的 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."'s Thumbnails", $fileNameToStoreThumb
示例:public/storage/ -> Johnny's Thumbnails -> nameOfTheFile.jpg
编辑1:
通过这样的路径解决:
$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: edit1 的解决方案: 几个小时后我没有发现错误,因为我修改了我的原始代码,所以我一生都找不到它。 所以我不小心设计了非常偶然的解决方案:
$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";
}
}
虽然没有使用 Storage 门面,但 vanilla php unlink 用于文件删除。不使用 Laravel 的内置功能而不是 vanilla 的可以吗?
【问题讨论】:
-
我会从路径名中删除
'。先猜一猜,一目了然。即使路径名中有空格对我来说也很奇怪,所以也尝试删除它们。
标签: laravel intervention