إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

Upload And Download Blob In Adf


12 رد (ردود) على هذا الموضوع

#1 Hala Salem

Hala Salem

    عضو مميز

  • فريق الإشراف
  • 524 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 14 November 2011 - 08:04 PM

ناس بتسال فى الموضوع ده كتير اوى ورغم وجوده على النت الا انى لقيت عمل ديمو بيمثل العمليه دى حيفيد الكثيرين

سيناريو الديمو

عندك صفحة فى الابليكيشن بتاعك اسمها Documents فيها فورمه خاصه بالموظفين وجدول خاص بالattachmets اللى رفعها كل موظف Master_Detail حتختار سجل اى موظف وبعدين حتضغط على ارفاق ملف حتظهر لك pop up window تطلب منك رفع هذا الملف ( الديمو بيرفع اى ملف على ألا يزيد حجمه فى المره الواحده عن 100 MB )وبعد ما تختار الملف و تضغط على حفظ حتلاقى ان فى جدول الAttachments اللى هو Detail لجدول الموظفين ظهر اسم الملف اللى تم رفعه الى الداتابيز ونوعه واسم الموظف الذى قام برفعه والوقت الذى تم رفعه فيه وكمان اختيار انك تعمل Download له اذا اردت عمل Download له حتضغط على ال Download Icons حتظهر لك نافذه لتحميل الملف فى اى مكان تريده

تشغيل الديمو

قم باضافه جدول الattachments الى scott Schema وهذا الجدول هو detail لجدول الموظفين وحمل السكريبت الخاص بالجدول وال sequence وال Trigger من المرفقات ثم افتح البرنامج على الجى ديفيلوبر JDeveloper R2 وظبط اعدادات ال Connection اللى اسمه ScottConn (البرنامج بيستخدم scott Schema ) على الاعدادات اللى عندك وتاكد ان نتيجة الاتصال هى success ثم قم بعمل Run لصفحة upload Documents حتلاقى ان فى فورم خاص بالموظفين وتحتها جدول ال attachments فارغ لانك لم تقم بتحميل اى ملف لاى موظف بعد كما فى الصوره

صورة


اختار سجل اى موظف ثم قم بالضغط على زر ارفاق ملف حتتفتح لك pop up window تطلب منك اختيار ملف لرفعه كما فى الصورة

صورة


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

صورة


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

صورة




حمل البرنامج من المرفقات واى سؤال على اى جزئيه فى تنفيذه حرحب بيه

ملفات مرفقة



#2 miro_aer

miro_aer

    مشترك

  • الأعضــاء
  • 87 مشاركة
  • الاسم الأول:Amr
  • اسم العائلة:Ismail
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle ADF TeamLeader

تاريخ المشاركة 14 November 2011 - 11:59 PM

جزاك الله خيرا على طرحك للأفكار ونشر العلم ... بس ياريت تحاولى تستخدمى
http://commons.apach...io/IOUtils.html
للتحويل من والى BlobDomain بدل من الكود الموجود فى كل من الدوال ...createBlobDomain..و downloadFileAction
يعنى على سبيل المثال بدل من الكود الموجود داخل الدالة .. createBlobDomain ممكن يحول الى
  private BlobDomain createBlobDomain(UploadedFile file)
  {
    if(file != null)
    {
	  try
	  {
	    return new BlobDomain(IOUtils.toByteArray(file.getInputStream()));
	  }
	  catch (Exception e){e.printStackTrace();}
    }
    return null;
  }

اخيرا نتمنى منك ومن المهندس مصطفى ماجد افكار جديدة كل يوم :D

Amr Ismail Rashed

Tel: +966 547404167

 

سبحان الله وبحمده سبحان الله العظيم

--------------------


#3 Hala Salem

Hala Salem

    عضو مميز

  • فريق الإشراف
  • 524 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 November 2011 - 01:07 AM

الاخ / miro_aer

شكرا على مرورك وعلى ملاحظاتك ولو لك اى ملاحظه تانى على المثال قولها اواى سؤال فى اى حاجه فى تنفيذه :)

بالنسبه لميثود IOUtils.toByteArray فانا عارفه ان الميثود دى بتقره ال Input stream وتحوله الى ByteArrayOutputStream لكن عيب الميثود دى انها بتعمل ال Buffer internally و بتحصل مشكله كبيره مع الملفات الضخمه لانك بتقراه كله مره واحده وبالتالى بفضل الطريقه الاولى اللى بتخلينى اتحكم فى حجم ال Buffer واقره من ال input واضع فى ال output لحد ما يخلص بدل ما احمل الملف بالكامل فى الذاكره
  • miro_aer معجب بهذا

#4 miro_aer

miro_aer

    مشترك

  • الأعضــاء
  • 87 مشاركة
  • الاسم الأول:Amr
  • اسم العائلة:Ismail
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle ADF TeamLeader

تاريخ المشاركة 15 November 2011 - 11:54 AM

اسمحيلى اناقشك فى بعض النقاط :D
عيب الميثود دى انها بتعمل ال Buffer internally و بتحصل مشكله كبيره مع الملفات الضخمه لانك بتقراه كله مره واحده وبالتالى بفضل الطريقه الاولى اللى بتخلينى اتحكم فى حجم ال Buffer

طالما انك بتحددى حجم معين لل buffer معنى كده انك بتحملى ملف لايزيد عن هذا ال buffer ........ وده ممكن عمله بأنك تسألى على حجم الملف المراد تحميله انه لايتعدى حجم معين
وكمان ده السورس كود بتاع IOUtils ممكن تحددى فيه DEFAULT_BUFFER_SIZE

http://www.docjar.co...Utils.java.html

واقره من ال input واضع فى ال output لحد ما يخلص بدل ما احمل الملف بالكامل فى الذاكره
وده اللى بيعمله بالفعل فى الكود لانه مفيش طريقة برمجيا على ما اعتقد يحمل بيها الملف مره واحدة

الجميل فى الكلاس انه فيه دوال كتير ممكن نستفيد منها مش لازم فى المثال ده بس ... فى التعامل مع IO Stream

انا حبيت اشاركك بعض المعلومات ونجعل القارئ يستفيد اكتر :D

Amr Ismail Rashed

Tel: +966 547404167

 

سبحان الله وبحمده سبحان الله العظيم

--------------------


#5 Hala Salem

Hala Salem

    عضو مميز

  • فريق الإشراف
  • 524 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 November 2011 - 10:46 PM

اسمحيلى اناقشك فى بعض النقاط

مفيش اى مشكله :)

طالما انك بتحددى حجم معين لل buffer معنى كده انك بتحملى ملف لايزيد عن هذا ال buffer


عندما احدد حجم معين لل Buffer اللى حقره واكتب بيه فى المره الواحده فانا بحدد بناء على عوامل كتير غير حجم الملف زى ال performance وال network والسرعه وو….وبالنسبه لحجم الملف انا لا اسال عنه ولكن باضع حجم معين لا يزيد عنه فى ملف ال web.xml وممكن يكون الحجم ده كبير

أيضا بالنسبه لحجم ال buffer فانا بحتاج احدد حجم معقول لل Buffer ده عشان اقره واكتب one Buffer بس فى المره فاهمنى لان الميثود دى بتستنى لما يكون عندى الداتا كلها وبعدين تروح كاتباها

عموما طريقه

Open input stream-open outputstream-create byte buffer واقره واكتب لم تحدث معى اى مشاكل على الاطلاق مع حجم الملفات عكس الطريقه التانيه كما ذكرت سابقا فلماذا لا تجرب استخدام طريقتك مع ملف حجمه مثلا 150MB وشوف شكل ال performance حيبقى عامل ازاى ؟

#6 sd4it

sd4it

    عضو مميز

  • الأعضــاء
  • 7,036 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 November 2011 - 11:13 PM

توجد بعض النقاط التي تحتاج تصحيح:

هالة:
بالنسبه لميثود IOUtils.toByteArray فانا عارفه ان الميثود دى بتقره ال Input stream وتحوله الى ByteArrayOutputStream لكن عيب الميثود دى انها بتعمل ال Buffer internally و بتحصل مشكله كبيره مع الملفات الضخمه لانك بتقراه كله مره واحده وبالتالى بفضل الطريقه الاولى اللى بتخلينى اتحكم فى حجم ال Buffer واقره من ال input واضع فى ال output لحد ما يخلص بدل ما احمل الملف بالكامل فى الذاكره
هذا غير صحيح لأنه في الكود يتم تحديد الـ buffer المطلوب قراءته وبالتالي لا يتم قراءة الملف مرة واحدة كما لا ننسى ان هذا الملف إنتاج أباتشي ولن يقعوا في مثل هذا الخطأ

عمرو:
طالما انك بتحددى حجم معين لل buffer معنى كده انك بتحملى ملف لايزيد عن هذا ال buffer ........ وده ممكن عمله بأنك تسألى على حجم الملف المراد تحميله انه لايتعدى حجم معين
هذا غير صحيح لأن تحديد الـ buffer معناه تحديد الحجم الذي يتم القراءة فيه في المرة الواحدة كما أن تحديد الحجم الأقصى يتم من خلال web.xml وليس برمجياً.

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

هالة:
عندما احدد حجم معين لل Buffer اللى حقره واكتب بيه فى المره الواحده فانا بحدد بناء على عوامل كتير غير حجم الملف زى ال performance وال network والسرعه وو….وبالنسبه لحجم الملف انا لا اسال عنه ولكن باضع حجم معين لا يزيد عنه فى ملف ال web.xml وممكن يكون الحجم ده كبير
توجد دراسات تمت بالفعل على هذا الأمر متضمنة السرعات والشبكة وكافة العوامل الأخرى والنتائج هي ان حجم الـ buffer المثال على الإنترنت يكون من مضاعفات الرقم 2 بحد أقصي 8 كيلو ، أي من الممكن أن يكون 1 أو 2 أو 4 أو 8 ، وحالياً تعتبر 8 كيلو هي الأنسب في حين انها كانت في حدود 1كيلو عندما كان هناك dialup


Open input stream-open outputstream-create byte buffer واقره واكتب لم تحدث معى اى مشاكل على الاطلاق مع حجم الملفات عكس الطريقه التانيه كما ذكرت سابقا فلماذا لا تجرب استخدام طريقتك مع ملف حجمه مثلا 150MB وشوف شكل ال performance حيبقى عامل ازاى ؟
في الدالتين لا توجد مشاكل والنتيجة واحدة وكلاهما صحيح ولكنني أفضل طريقة عمرو لسبب واحد ، أن الكود عبارة عن سطر واحد وبالتالي أسهل على المبرمج في كتابتها وأوفر في الوقت
  • miro_aer معجب بهذا

مهندس / مصطفى ماجد
المدير الفني بشركة المبرمج الذكي
mostafa.maged@sd4it.com
خبراء في Oracle Fusion Middleware ومتخصصون في التحويل من أوراكل فورم إلى ADF وتطوير الأنظمة الجديدة بتقنية ADF
http://www.sd4it.com

https://www.youtube.com/c/sd4it

 


#7 miro_aer

miro_aer

    مشترك

  • الأعضــاء
  • 87 مشاركة
  • الاسم الأول:Amr
  • اسم العائلة:Ismail
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle ADF TeamLeader

تاريخ المشاركة 15 November 2011 - 11:41 PM

جزاك الله خيرا ياباشمهندس :D

Amr Ismail Rashed

Tel: +966 547404167

 

سبحان الله وبحمده سبحان الله العظيم

--------------------


#8 Corbina

Corbina

    عضو

  • الأعضــاء
  • 3 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 20 September 2013 - 01:19 PM

A very good tutorial.thanks

تم التعديل بواسطة Corbina, 20 September 2013 - 01:20 PM.


#9 monte jamaice

monte jamaice

    مشترك

  • الأعضــاء
  • 117 مشاركة

تاريخ المشاركة 22 August 2017 - 06:06 PM

سلام عليكم قمت بتحميل هذي المثال

 

وانا اعمل علي jdev11 وعندما اعمل رن للصفحة jsp مش راضية تفتح وبكون loding......... شغال قمتة بعمل صفحة jsf وفتح معي لكن عندما اختار الملف واضغط حفظ مش راضي يحفظ معي

لا اعرف ما هو السبب


montaser orcl


#10 RSU89

RSU89

    مشترك

  • الأعضــاء
  • 145 مشاركة
  • الاسم الأول:محمد
  • اسم العائلة:شايوق
  • البـلـد: Country Flag
  • الاهتمامات:كل ماهو جديد في عالم البرمجه.Oracle 11G +ADF

تاريخ المشاركة 24 August 2017 - 03:25 PM

سلام عليكم ..بالنسبه upload اكثر من ملف يعني مثلا لو عندي موظف عندو اكثر من مستند واحد لرفعه مره واحد ماهو السيناريو المتبع .انا بقوم حليت المشكله موقتا برفع الملفات ك rar

ارجو الافاده



#11 sd4it

sd4it

    عضو مميز

  • الأعضــاء
  • 7,036 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 26 August 2017 - 02:31 AM

تم إضافة هذه الإمكانية في الإصدار الجديد


مهندس / مصطفى ماجد
المدير الفني بشركة المبرمج الذكي
mostafa.maged@sd4it.com
خبراء في Oracle Fusion Middleware ومتخصصون في التحويل من أوراكل فورم إلى ADF وتطوير الأنظمة الجديدة بتقنية ADF
http://www.sd4it.com

https://www.youtube.com/c/sd4it

 


#12 enghegazy

enghegazy

    عضو

  • الأعضــاء
  • 3 مشاركة
  • الاسم الأول:ahmed
  • اسم العائلة:hegazy
  • البـلـد: Country Flag

تاريخ المشاركة 03 October 2018 - 05:41 PM

اذا في احد يقدر يفيدني اني افتح السكانر usb scanner  من java لاني بعمل بروجكت ADF

scan documents and save it on H.D Using ADF



#13 sd4it

sd4it

    عضو مميز

  • الأعضــاء
  • 7,036 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 08 October 2018 - 01:31 PM

يجب الاستعانة بمكتبة خارجية


مهندس / مصطفى ماجد
المدير الفني بشركة المبرمج الذكي
mostafa.maged@sd4it.com
خبراء في Oracle Fusion Middleware ومتخصصون في التحويل من أوراكل فورم إلى ADF وتطوير الأنظمة الجديدة بتقنية ADF
http://www.sd4it.com

https://www.youtube.com/c/sd4it