首先,我很抱歉我的英语不好。
我想使用类 Storage
将文件/图像从我的驱动程序上传到我的项目目录。我希望每个文件/图像都上传/移动到我的public/img
目录。我在我的视图和帖子控制器上使用Form::file('img')
,我写了这个
$img = Input::file('img');
if ($img !== null) {
$filename = $img->getClientOriginalName();
Storage::disk('uploads')->put('filename', $filename);
$jenis->img = $filename;
}
在我的 config/filesystem
上我写了
'uploads' => [
'driver' => 'local',
'root' => public_path() . '/img',
],
但是,我的 public/img
目录上没有任何内容,也没有新的文件/图像。
你可以帮我解决我的代码错误吗?
我希望你们可以帮助我提供另一个关于如何在laravel上传文件/图像的好方法
答案 0 :(得分:7)
看起来您的问题是您没有存储文件,而是引用其名称而不是其内容。
试试这个:
Storage::disk('uploads') -> put($filename, file_get_contents($img -> getRealPath()));
答案 1 :(得分:0)
在我的文件系统文件中,我以这种方式配置我的图像目录:
'uploads' => [
'driver' => 'local',
'root' => public_path("/img"),
],
我认为你可以用你的方式,但另一点。
要从视图中获取文件,您应该使用File :: get Laravel函数:
$filename = $img->getClientOriginalName();
Storage::disk('uploads')->put($filename, \File::get($file));
这样就足够了,你可以使用文件系统中指定的目录中上传的文件名保存文件。
答案 2 :(得分:0)
if ($request->hasFile('original_pic')) {
$original_pic = $request->file('original_pic');
$file_extension=$original_pic>getClientOriginalExtension();
$filename = time() . '.' . $file_extension;
# upload original image
Storage::put('ArticlesImages/' . $filename, (string) file_get_contents($original_pic), 'public');
# croped image from request.
$image_parts = explode(";base64,", $request->input('article_image'));
$image_base64 = base64_decode($image_parts[1]);
Storage::put('ArticlesImages/croped/' . $filename, (string) $image_base64, 'public');
# get image from s3 or local storage.
$image_get = Storage::get('ArticlesImages/croped/' . $filename);
# resize 50 by 50 1x
$image_50_50 = Image::make($image_get)
->resize(340, 227)
->encode($file_extension, 80);
Storage::put('ArticlesImages/1x/' . $filename, (string) $image_50_50, 'public');
$file_url = Storage::url('ArticlesImages/croped/' . $filename);
return response()->json(['success' => true, 'filename' => $filename, 'file_url' => $file_url], 200);
}