database - للاندرويد - كيفية رفع الملفات على gmail




أفضل طريقة لتخزين الملفات المحملة بواسطة المستخدم في تطبيق الويب (2)

سؤالك واسع للغاية بحيث لا يكون مفيدًا حقًا. أفضل نهج يعتمد على متطلبات محددة. ومع ذلك...

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

من أجل تجربتي ، بينما كنت أستخدم حشيقة مثل اسم الملف المحلي الذي كنت أفضّله ، لم ينجح ذلك لأن ملفاتنا لم تكن مقتصرة على الصور: فالصور غير تحتاج إلى اسم الملف ليعود لخدمة المستخدمين ، ولا يقوم القائمون بالتحميل لا سيما أن تتم إعادة تسمية ملفاتها بشكل جذري حيث تجعل من المستحيل بالنسبة لهم معرفة ما هو الملف.

أما بالنسبة للصور ، فهناك بعض العمل غير التافه الذي يجب القيام به في عملية إعادة القياس إلى مختلف الأحجام / الصور المصغرة.

أقوم بإنشاء تطبيق ويب (في Django) ، والذي يحتاج إلى السماح للمستخدمين بتحميل الملفات (خاصة الصور ، والتي يتم عرضها لاحقًا للمستخدمين الآخرين). أحاول فهم أفضل طريقة لتخزين هذه الملفات التي تم تحميلها.

من الأسئلة ذات الصلة ، رأيت بعض الأشخاص اقترح إعطاء الملف معرف unqiue تم إنشاؤه بواسطة الخادم ، ثم إنشاء جدول DB الذي يقوم بتعيين التعيين على أسماء الملفات الأصلية.

هل هذا هو أفضل طريقة لتخزين الملفات التي تم تحميلها من قبل المستخدم ، من الأمان أو الكفاءة أو أي وجهة نظر أخرى؟ ما نوع المعلومات التي يجب تخزينها حول كل ملف؟

هل هناك أي ممارسات أخرى أفضل تشارك في قبول الملفات المحملة بواسطة المستخدم؟ (بخلاف التأكد من أنها صور حقيقية وفحص حجمها ، من الواضح)؟

تعديل : مزيد من المعلومات حول ما أحتاجه. أتحدث تحديدًا عن ملفات الصور التي يحتاج المستخدمون إلى تحميلها وتضمينها في المحتوى الذي ينشئونه. تخيل ذلك كإجابة StackOverflow (أو مشاركة مدونة): يقوم شخص ما بتحميل صورة ، والتي يجب تخزينها وعرضها عندما يرى أي شخص آخر الإجابة.

شكر،
عيدان
ملاحظة: هناك العديد من الأسئلة ذات الصلة ، ولكن لم أجد سؤالًا يطالب بمقارنة طرق تخزين الملفات المحملة بواسطة المستخدم.


هذا سؤال كبير.

فيما يتعلق بحالة استخدام صورتك ، فهذا هو مجال خادم الصور الذي عادة ما يكون جزءًا منفصلًا تمامًا من التطبيق. يعالجون دورة الحياة وتغيير حجم الصور (يتم تخزين صورة واحدة / حجمها إلى أحجام مختلفة). بقدر ما رأيت لم ينفذ أبدا من قبل عمود BLOB من SQL ، ولكن عن طريق ملف عادي مباشرة على القرص.

أيضا إلقاء نظرة على ( مثال البنية التحتية من الفيسبوك )

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





file-upload