كيف أحفظ صورة في sqlite

السلام عليكم ورحمة الله وبركاتة

انا ابرمج موقعا بلغة روبي إطار عملة sinatra

استخدم قاعدة بيانات نوع sqlite ,,

قمت بعمل نموذج اتش تي ام ال وربطتها بروبي وتحفظ البيانات في قاعدة بيانات

عدا الصور فهي لاتنحفظ وهذا لاني لا اعرف مانوع الحق الذي اختاره في الجداول , integer - text وغيرها

هل يوجد من يساعدني

تحياتي

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

17

مع عدم خبرتي في البرمجة فأظن أنك لن تحفظ الصورة بل ستحفظ مسار الصورة

وكيف احفظ مسار الصورة ؟؟ يعني ارفعها من جهاز عميل الى قاعدة البيانات ..

لن ترفعها إلى قاعدة البيانات، بل سترفعها إلى السيرفير في مكان معين، فلنقل مجلد الصور

ثم ستحفظ مسار الصورة في قاعدة البيانات

images/pic.png

هكذا مثلا

ولكن لو وضعتها هكذا سيتم التبديل بين الصور عند رفعها ,,

كيف يمكن ان يتم ترقيمها تلقائيا ؟؟ pic-01.png - pic-02.png وغيرها

لا، عند رفع الصور غير اسمها إلى شيء عشوائي قبل حفظها

لم افهم ,, انا اقصد انه لدي صفحة html ربطتها بروبي ,,

وفي هذه الصفحة لدي نموذج يدخل الزبون ويرفع صورته بعد رفع صورته اريدها ان تظهر في اي مكان على السيرفر او قاعدة البيانات

ولكن على طريقتك انت ستنحفظ الصور وستبدل بكل مرة لانه نفس الاسم

شكرا اخي ^_^

لا تفعل، اتركها ملف عادي و ليس ملف داخل قاعدة بيانات...

انت مبرمج، فكر بطريقة واضحة حيث لما يجد البرنامج أن الصورة موجودة يغير اسم الصورة القادمة...

استعن بأسماء لا تتكرر أبدا... مثلا تدمج في الاسم اسم الملف العادي + تاريخ الرفع + 8 أرقام عشوائية مثلا...

يُمكن حفظ الصور في حقول من نوع Blob field وهي إختصار لـ Binary Large Object لكن أنصحك بإستخدام محرك قاعدة بيانات أكبر مثل MySQL لحفظ الصور داخلها، حيث أن محركات قواعد البيانات اﻷكبر لا تتأثر عند إضافة عدد كبير من الصور من حيث اﻷداء

نوع البيانات Blob في SQLite يسمح بتخزين بيانات ثنائية، لكن له محدودياته. عليك أن تقرأ الصورة بصورة بيانات ثنائية ثم تدخلها إلى قاعدة البيانات، لا أعرف الكثير عن Ruby وSinatra.

إذا كنت تطور بروبي فأنصحك باستخدام RubyOnRails ﻷن كثير من rubygems تدعمه مثل: paperclip التي تقوم بحفظ الملف في المسار المحدد باسم عشوائي و تحفظ اسم الملف الأصلي, حجمه, نوعه و الكثير من الميزات اﻷخرى.

أما بالنسبة لاسم الملف فكل ما عليك هو أن تجعل جزء من اسم الملف عشوائي و بهذا كل ملف سيكون مخزن باسم مختلف.