【问题标题】:Upload photo in project and db - Laravel在项目和数据库中上传照片 - Laravel
【发布时间】:2018-04-15 10:12:52
【问题描述】:

我需要一些关于上传的帮助。我想将产品插入数据库。该产品有3张图片。我希望将图片上传到项目中的特定文件夹中,并将路径输入到db中。 我要上传照片的文件夹是:/public/css/img

我的 Db 是这样的:我会在 db 中手动添加一个示例。

标识 |标题 |price|category_id|图片1 |图片2| |图片3|等等
1 |沙发 |324.0 5 |/css/img/1.jpg |/css/img/2.jpg |/css/img/3.jpg

这是我的观点 addProductModal.blade.php -> 是带表单的模态。

<div class="modal fade" id="modalFormaddproduct" role="dialog">
    <div class="modal-dialog" id="route">
        <div class="modal-content">
            <!-- Modal Header -->
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Inchide</span>
                </button>
                <h4 class="modal-title" id="myModalLabel">Adauga Subcategorie</h4>
            </div>

            <!-- Modal Body -->
            <div class="modal-body" style="text-align: center;">
                <p class="statusMsg"></p>
                <form role="form" action="{{route('addproduct')}}" method="post">
                    {{csrf_field()}}
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Nume</label>
                                <input type="text" class="form-control  text-center" name="name" placeholder="">
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Pret</label>
                                <input type="text" class="form-control  text-center" name="price" placeholder="">
                            </div>
                        </div>
                    </div>
                    <!-- /.row -->
                    <div class="col-sm-6">
                        <div class="form-group">
                            <label>Subcategoria:</label>
                            <select style="text-align-last:center" class="form-control text-center" name="category_id">
                                @foreach($categories as $category)
                                    @foreach($category->subcategories as $subcategory)
                                        <option value="{{$subcategory->id}}">{{$subcategory->category}}</option>
                                    @endforeach
                                @endforeach
                            </select>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Descriere</label>
                                <input type="text" class="form-control  text-center" name="description" placeholder="">
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Marime</label>
                                <input type="text" class="form-control text-center" name="size" placeholder="">
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Material</label>
                                <input type="text" class="form-control  text-center" name="material" placeholder="">
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Cantitate</label>
                                <input type="text" class="form-control  text-center" name="quantity" placeholder="">
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group">
                                <label>Recomandat:</label>
                                <select style="text-align-last:center" class="form-control text-center" name="hot">
                                    <option value="0">Nerecomandat</option>
                                    <option value="1">Recomandat</option>
                                </select>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-sm-4">
                                <div class="form-group">
                                    <label>Imagine 1:</label>
                                    <input type="file" name="file1" id="file1">
                                    <input type="submit" value="Upload1" name="submit1">
                                    <input type="hidden" value="{{ csrf_token() }}" name="_token">
                                </div>
                            </div>
                            <div class="col-sm-4">
                                <div class="form-group">
                                    <label>Imagine 2:</label>
                                    <input type="file" name="file2" id="file2">
                                    <input type="submit" value="Upload2" name="submit2">
                                    <input type="hidden" value="{{ csrf_token() }}" name="_token">
                                </div>
                            </div>
                            <div class="col-sm-4">
                                <div class="form-group">
                                    <label>Imagine 3:</label>
                                    <input type="file" name="file3" id="file3">
                                    <input type="submit" value="Upload3" name="submit3">
                                    <input type="hidden" value="{{ csrf_token() }}" name="_token">
                                </div>
                            </div>
                        </div>
                        <div class="modal-footer">
                            <button type="button" style="background: gainsboro; border-radius: 8px" class="btn btn-default" data-dismiss="modal">Inchide</button>
                            <button type="submit" style="background: #10D47D; border-radius: 8px" class="btn btn-primary">Adauga</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

路由是Route::post('/products/add', 'AdminController@addproduct')-&gt;name('addproduct');

控制器:AdminController.php

public function addproduct(Request $request)
    {
        $product = new Product();
        $product->title = $request->name;
        $product->price = $request->price;
        $product->category_id =  $request->category_id;
        $product->description = $request->description;
        $product->size = $request->size;
        $product->material = $request->material;
        $product->quantity = $request->quantity;
        $product->hot = $request->hot;
        $product->images1 = $request->file1;
        $product->images2 = $request->file2;
        $product->images3 = $request->file3;


         if (Input::hasFile('file1','file2','file3')) {

        echo 'Uploaded';
        $file = Input::file('file1','file2','file3');
        $file->move('uploads', $file->getClientOriginalName());
        echo '';
    }
        $product->save();
        return redirect(route('adminproducts'))->with('success', 'The Product was added');
    }

【问题讨论】:

    标签: php mysql laravel image-uploading


    【解决方案1】:

    您应该在表单中添加:

    enctype="multipart/form-data"
    

    确保您可以像这样上传文件:

    <form role="form" action="{{route('addproduct')}}" method="post" enctype="multipart/form-data">
    

    【讨论】:

    • 我添加enctype后,以dB为单位输入的路径为:E:\Instalate\xampp\tmp\php9D38.tmp。问题是在产品详细信息视图中没有显示图片。如何将路径更改为:\public\css\img\.jpg?
    【解决方案2】:

    我认为没有任何理由不使用一些维护的库,而是自己编写所有功能。我建议你看看:https://github.com/spatie/laravel-medialibrary

    【讨论】:

    • 这对我来说有点复杂。我是初学者:)
    • 当然,所以你可以使用下面的解决方案 :) 但是当你的页面变得有点困难时,你会想要使用更复杂的解决方案并处理存储到你的图像和文件应用程序然后记住该链接并在将来粗暴地查看它:)
    【解决方案3】:

    我找到了解决方案。

      public function addproduct(Request $request)
        {
            $product = new Product();
            $product->title = $request->name;
            $product->price = $request->price;
            $product->category_id = $request->category_id;
            $product->description = $request->description;
            $product->size = $request->size;
            $product->material = $request->material;
            $product->quantity = $request->quantity;
            $product->hot = $request->hot;
            $file1 = Input::file('file1');
            $file2 = Input::file('file2');
            $file3 = Input::file('file3');
            $filename1 = $file1->getClientOriginalName();
            $filename2 = $file2->getClientOriginalName();
            $filename3 = $file3->getClientOriginalName();
            $file1 = $file1->move(public_path().'/img', $filename1);
            $file2 = $file2->move(public_path().'/img', $filename2);
            $file3 = $file3->move(public_path().'/img', $filename3);
            $product->images1 = '/img/'.$filename1;
            $product->images2 = '/img/'.$filename2;
            $product->images3 = '/img/'.$filename3;
            $product->save();
            return redirect(route('adminproducts'))->with('success', 'Produsul a fost creat');
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-19
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 2021-03-23
      相关资源
      最近更新 更多