我正在Laravel上创建一个新帖子。但我坚持上传图像并将图像路径保存到数据库。我的控制器是
if($request->hasFile('image'))
{
$image = $request->file('image');
$filename = time() . '.'. $image->getClientOriginalExtension();
$path = public_path('images');
$imagepath = $request->image->move($path, $filename);
$post->image = $imagepath;
}
但它将路径保存为' C:\ xampp \ tmp \ php2CF9.tmp'。 是什么导致错误?或者有更好的方法吗?
答案 0 :(得分:2)
Laravel可以自动为您保存正确的路径。首先,您需要设置本地文件存储,如果您还没有这样做(https://laravel.com/docs/5.4/filesystem#configuration)
然后你可以做像花哨的东西:
$post = new Post();
$post->image = $request->file('image')->store('image');
答案 1 :(得分:1)
1)确保您在表单中添加了enctype="multipart/form-data"
,并在<input type="file">
字段中添加了name="image"
2)在laravel images
文件夹中创建一个名为public
的新文件夹。
3)在controller
if( $request->hasFile('image')) {
$image = $request->file('image');
$path = public_path(). '/images/';
$filename = time() . '.' . $image->getClientOriginalExtension();
$image->move($path, $filename);
$post->image = $path;
}
$post->save();
4)在view
<img src="{{ asset('images/FILENAME.EXTENSION') }}">
希望它有用。
答案 2 :(得分:0)
你可以试试这个。什么是保存DB的路径?你可以通过文件名和扩展名来访问你的图像
if($request->hasFile('image'))
{
$fileNameExt = $request->file('image')->getClientOriginalName();
$fileName = pathinfo($fileNameExt, PATHINFO_FILENAME);
$fileExt = $request->file('image')->getClientOriginalExtension();
$fileNameToStore = $fileName.'_'.time().'.'.$fileExt;
$pathToStore = $request->file('image')->storeAs('public/images',$fileNameToStore);
}
$post = new Post;
if($request->hasFile('image')){
$post->img = $fileNameToStore;
}
$post->save();
但首先你必须与工匠建立链接:
php artisan storage:link
因此您的图片将存储在: 项目名\存储\应用\公共\图像
答案 3 :(得分:0)
您可以尝试,它还会存储文件名的完整路径:
if ($request->hasFile('image')) {
$filename = $request->file('image')->getClientOriginalName();
$filename = url("/images") .
"/" . uniqid() .
$request->file('image')
->getClientOriginalName();
$destinationPath = "images";
$request->file('image')->move($destinationPath, $filename);
$post->image = $filename;
}
答案 4 :(得分:0)
$imageName = time().'.'.$request->image->getClientOriginalExtension();
$request->image->move(public_path('images'), $imageName);
store into database with file name
$post->image = $imageName;
display in view
{{ URL::to('/images/'.$post->image) }}