上传图像并将图像路径保存到数据库Lavavel 5.4

时间:2017-09-10 10:01:54

标签: laravel

我正在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'。 是什么导致错误?或者有更好的方法吗?

5 个答案:

答案 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) }}