اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

لتخزين الصور في Laravel ومن ثم تخزينها في قاعدة البيانات، ستحتاجين إلى اتباع الخطوات التالية:

1- إنشاء جدول في قاعدة البيانات لتخزين الصور: قم بإنشاء جدول جديد في قاعدة البيانات لتخزين الصور. يجب أن يتضمن هذا الجدول حقولًا مثل اسم الصورة ومسار الصورة وأي حقول إضافية تحتاج إليها لتتمكن من تخزين واسترداد الصور.

Schema::create('photos', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('path');
    $table->timestamps();
});

2- إنشاء نموذج Model للصورة: يجب إنشاء نموذج Model للصورة لتتمكن من الوصول إلى جدول الصور في قاعدة البيانات. سيتم استخدام هذا النموذج لإنشاء سجلات صور جديدة وتحديثها وحذفها.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Photo extends Model
{
    protected $fillable = [
        'name', 'path'
    ];
}

3- إضافة حقل لتحميل الصور في النموذج: يجب إضافة حقل لتحميل الصور في النموذج. يمكن استخدام الحقل "file" لهذا الغرض.

<input type="file" name="photo">

4- تخزين الصورة في الخادم: قبل تخزين الصورة في قاعدة البيانات، يجب تخزينها في الخادم. يمكن استخدام وظيفة "store" للقيام بذلك. سيتم حفظ الصورة في المسار المحدد في الدالة "store".

$path = $request->file('photo')->store('public/photos');

5- إنشاء سجل الصورة في قاعدة البيانات: بعد حفظ الصورة في الخادم، يمكنك إنشاء سجل للصورة في قاعدة البيانات باستخدام النموذج Model.

use App\Models\Photo;

$photo = new Photo;
$photo->name = $request->file('photo')->getClientOriginalName();
$photo->path = $path;
$photo->save();

6- استرداد الصورة من قاعدة البيانات: يمكنك استرداد الصورة من قاعدة البيانات باستخدام النموذج Model. يجب البحث عن سجل الصورة باستخدام معرف الصورة واسترداد المسار الذي تم تخزين الصورة به في الخادم.

use App\Models\Photo;

$photo = Photo::findOrFail($id);
$path = $photo->path;

7- عرض الصورة في الواجهة: يمكنك عرض الصورة في الواجهة باستخدام العنوان URL للصورة. يمكن الحصول على العنوان URL باستخدام دالة "asset".

<img src="{{ asset($photo->path) }}" alt="{{ $photo->name }}">

8- حذف الصورة: يمكن حذف الصورة من الخادم وقاعدة البيانات باستخدام النموذج Model.

use App\Models\Photo;

$photo = Photo::findOrFail($id);
Storage::delete($photo->path);
$photo->delete();

بهذا الشكل، يمكنك تخزين الصور في Laravel ومن ثم تخزينها في قاعدة البيانات واستردادها وحذفها عند الحاجة.

  • 0
نشر

تخزين الصور في التطبيق الخاص بـ Laravel يتم عادة باستخدام النمط المعماري MVC (Model-View-Controller). يتم تخزين الصور عادة في الملفات المؤقتة الموجودة في الخادم الذي يعمل عليه التطبيق.

عند تحميل الصور من قبل المستخدم، يتم حفظها في مجلد مؤقت (Temporary folder) في الخادم وذلك باستخدام الأوامر الموجودة في Laravel. يمكن استخدام الأمر store() لحفظ الصور في مجلد مؤقت، والأمر move() لنقل الصور من مجلد المؤقت إلى المجلد الدائم.

بمجرد أن يتم حفظ الصور في المجلد الدائم، يمكن حفظ مسارها في قاعدة البيانات. يمكن استخدام نموذج Eloquent Model في Laravel لحفظ معلومات الصورة في قاعدة البيانات.

للقيام بذلك، يمكن إنشاء جدول في قاعدة البيانات يحتوي على الحقول المختلفة التي تريد تخزينها، مثل اسم الملف، مسار الملف، تاريخ التحميل، وغيرها. وبعد ذلك يمكن استخدام دالة save() لحفظ المعلومات المتعلقة بالصورة في جدول قاعدة البيانات.

ومن ثم يمكن استرجاع الصورة من القاعدة عن طريق استخدام المسار المخزن في القاعدة، ويمكن عرضها للمستخدم في التطبيق.

بدايةً، يمكن استخدام الأمر store() لحفظ الصور في مجلد مؤقت. يمكن استخدام الكود التالي في وحدة التحكم (Controller) لتحميل الصورة وحفظها في المجلد المؤقت:

public function store(Request $request)
{
    if ($request->hasFile('image')) {
        $image = $request->file('image');
        $imagePath = $image->store('public/temp');
    }

    // تقوم بإعادة استجابة (response) إلى المستخدم
}

 

يتم حفظ الصورة في مجلد public/temp في الخادم. يمكن استخدام الأمر move() لنقل الصورة من المجلد المؤقت إلى المجلد الدائم، وذلك باستخدام الكود التالي:

public function store(Request $request)
{
    if ($request->hasFile('image')) {
        $image = $request->file('image');
        $imagePath = $image->store('public/temp');

        $newPath = str_replace('public/temp', 'public/images', $imagePath);
        Storage::move($imagePath, $newPath);
    }

    // تقوم بإعادة استجابة (response) إلى المستخدم
}

بهذه الطريقة، يتم نقل الصورة من المجلد المؤقت إلى المجلد الدائم، الذي يتم استخدامه لتخزين الصور بشكل دائم.

يمكن الآن حفظ معلومات الصورة في قاعدة البيانات باستخدام نموذج Eloquent Model. يمكن إنشاء نموذج جديد يحتوي على الحقول المطلوبة لتخزين معلومات الصورة، مثل اسم الملف، المسار، وتاريخ التحميل. يمكن استخدام الكود التالي لحفظ معلومات الصورة في قاعدة البيانات:

public function store(Request $request)
{
    if ($request->hasFile('image')) {
        $image = $request->file('image');
        $imagePath = $image->store('public/temp');

        $newPath = str_replace('public/temp', 'public/images', $imagePath);
        Storage::move($imagePath, $newPath);

        $imageModel = new Image;
        $imageModel->filename = $image->getClientOriginalName();
        $imageModel->filepath = $newPath;
        $imageModel->upload_date = now();
        $imageModel->save();
    }

    // تقوم بإعادة استجابة (response) إلى المستخدم
}

في النهاية، يمكن استرجاع الصورة من قاعدة البيانات وعرضها في التطبيق. يمكن استخدام الكود التالي لاسترجاع معلومات الصور من قاعدة البيانات وعرضها في الصفحة:

public function show($id)
{
    $image = Image::findOrFail($id);
    $url = Storage::url($image->filepath);

    return view('images.show', compact('url'));
}

يتم استرجاع الصورة من قاعدة البيانات باستخدام نموذج Eloquent Model، ثم يتم استخدام الأمر url() لإنشاء رابط للصورة. يمكن عرض الصورة في الصفحة باستخدام الكود التالي في عرض الصفحة:

<img src="{{ $url }}" alt="Image">

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...