• 0

كيفية تخزين صورة في قاعدة البيانات MySQL

أريد أن أقوم بتخزين صورة قادمة من تطبيق جوال ( فلاتر ) في قاعدة البيانات ( MySQL ) باستخدام Laravel

يعني ال request يتم إرساله لل API

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

بداية , لا يمكنك تخزين أي ملفات بقاعدة البيانات Sql , عوضا عن ذلك يمكنك إستخدام الfile systems لتخزين الصورة أو الملف و تخزين باث الصورة أو الملف في قاعدة البيانات .

يتم إستقبال الطلب من قبل اللارافل و معالجته على هذا النحو : 

<?php 

public function uploadImg(Request $request) {
   // التحقق إن كان الطلب يحمل ملف باسم image
   if($request->hasFile('image')) {
            // انشاء اسم بلاحقة للملف
            $name = time()."_".$request->file('image')->getClientOriginalName();
            
            // تخزين الملف بالpublic path 
            $request->file('image')->move(public_path('images'), $name);
   }
   
   //
   return response()->json([ 
            asset("images/$name"), // باث الصورة
            201, // كود الحالة 
            'message' => asset("images/$name") ? 'تم حفظ الصورة' : 'failed'
   ]);
}
تمّ تعديل بواسطة Adnane Kadri
2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1
بتاريخ 21 دقائق مضت قال Mohammed Abu Yousef:

متشكر جدا

طيب أين يتم حفظ الصور؟

إن كنت تعتمد على تخزين محلي فقط يمكنك تخزين الملفات إما في الـ public_path أو الـ storage_path .

في الحالة الأولى ستكون جميع الملفات و الصور المخزنة ظاهرة للعامة و يمكن الوصول إليها ببساطة . تخزن الملفات في :

public > your-folder

و يكون التخزين على هذا النحو : 

<?php 
..
$request->file('image')->move(public_path('your-folder'), $name);

في الحالة الثانية لن يمكن إستدعاء الصور و الملفات إلا عن طريق إنشاء رابط symlink و هاته الطريقة أكثر أمانا و حفظا للخصوصية في حالة ما كانت الملفات و الصور المخزنة حساسة أو خاصة . افتراضيا يتم تخزين هاته الصور و الملفات في :

storage > app > public > your-folder

و التخزين على هذا النحو : 

<?php 
..
$request->file('image')->move(storage_path('your-folder'), $name);

علما أنه يمكنك إدارة و إنشاء ديسكات التخزين بملف config/filesystems.php :

<?php 
  
 ...
 'disks' => [
        
        ...
   
        'storage-path' => [
          'driver' => 'local',
          'root' => storage_path('app').'/uploads',
        ],
   
        'public-path' => [
          'driver' => 'local',
          'root' => public_path().'/uploads',
          'url' => env('APP_URL').'/public_files',
          'visibility' => 'public',
        ]
   
        ...
    ],

ملاحظة : 

يمكنك إنشاء الsymlink عن طريق طباعة الأمر :

php artisan storage:link

 

بتاريخ 28 دقائق مضت قال Mohammed Abu Yousef:

عند الرفع على استضافة، هل يتم حفظ الصور في السيرفر ؟ 

و نفس الأمر بالنسبة للمواقع المرفوعة على السرفرات

 

تمّ تعديل بواسطة Adnane Kadri
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

يمكنك كذالك تخزين الصور ببساطة بإستعمال دالة في المتحكم الخاص بك على الشكل التالي.

 public function uploadImage(Request $request)
    {
        $request->validate([
            'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', // تحديد صيغة الصورة وحجمها
        ]);
  
        $imageName = time().'.'.$request->image->extension();  // أعطاء إسم  مناسب للصورة
   
        $request->image->move(public_path('images'), $imageName); //   public/images  رفع الصورة إلى الخادم في مجلد       
   
        return back()
            ->with('success','You have successfully upload image.')
            ->with('image',$imageName);
   
    }

و إجابتا على سؤالك الثاني فالصور تحفظ داخل مجلدات المشروع في الخادم.

فمثلا في هذا المثال ستجد الصورة في مجلد public/images ويمكن أيضا تخزينها في مجلدات أخرى حسب الحاجة.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

متشكر جدا

طيب أين يتم حفظ الصور؟

قصدي (  عند الرفع على استضافة، هل يتم حفظ الصور في السيرفر ؟ )

تمّ تعديل بواسطة Mohammed Abu Yousef

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن