【问题标题】:laravel saving images start with commalaravel 保存图片以逗号开头
【发布时间】:2021-04-21 01:45:40
【问题描述】:

我已经在我的 laravel 项目中实现了 dropzone js,但是在将图像保存到数据库时遇到了一个问题

,/uploads/products/27/607f0fc0942b0_1618939840_fc3cde370d846c4d14b0200a29e9206f.png,/uploads/products/27/607f0fc0945e8_1618939840_copy-space-with-opened-quran_23-2148214357.jpg,/uploads/products/27/607f0fc09474d_1618939840_1 (1).jpg

问题是图像以逗号开头,这是错误的,例如必须在图像之后 image1.png,image2.png

这是我的控制器

            $product_images = json_decode($request->product_images[0],true);
            $images = [];
            $path = "";
            
            $productsPath = 'uploads/products/';
            $productPath = 'uploads/products/'.$request->product_id;
            if(!file_exists($productsPath)){
                mkdir($productsPath);
            } 
            
            
            if (!file_exists($productPath)) {
                mkdir($productPath, 0777,true);
            }
            foreach($product_images as $img){    
                
                $file = $img['name'];
                // $extension = $img->guessExtension();
                $filename = uniqid() .'_'. time() .'_'. $file;
                
                $img = explode(',',$img['file'])[1];

                $img = str_replace('', '+', $img);
                $data = base64_decode($img);

                $file = $productPath .'/'. $filename;
                $success = file_put_contents($file, $data);
            //  dd($file);
                $images[] = '/'. $file;
            }


            // Update Product Information On "products" table
            $product = Product::where('id', $request->product_id)->first();
            $product->created_by = auth()->user()->id;
            $product->name = request('name_en');
            $product->name_ar = request('name_ar');
            $product->description = request('description_en'); // Must be moved to "product_information"
            $product->description_ar = request('description_ar'); // Must be moved to "product_information"
            $product->youtube = request('youtube'); // Must be moved to "product_information"
            $product->youtube_ar = request('youtube_ar'); // Must be moved to "product_information"
            $product->slug = slugify($request->name_en, 'Product', '', '');
            // $product->image = request('name_en');
            $product->brand_id = request('brand');
            $product->status = request('status');
            $data = explode(',' ,$product->image);
            
            $data = array_merge($data,$images);
            
            $remove_images = json_decode($request->removed_images, true);
            $temp = [];
            $i = 0;
            foreach($data as $key => $imag){
                $i  = $i + 1;
                if(!empty($remove_images) && in_array($imag, $remove_images)){
                    if (file_exists($productPath .'/'. $imag)) {
                        unlink($productPath .'/'. $imag);
                    }
                }else{
                    if($i < 8)
                        $temp[] = $imag;
                }
            }
            $product->image = implode($temp, ',');
            // dd (explode(',' ,$product->image));
            
            $product->save();

谢谢

【问题讨论】:

  • 您是否进行了任何调试以确定问题的根源?

标签: php laravel


【解决方案1】:

像这样使用内爆

implode(',', $temp);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多