Hala Salem بتاريخ: 14 نوفمبر 2011 تقديم بلاغ مشاركة بتاريخ: 14 نوفمبر 2011 ناس بتسال فى الموضوع ده كتير اوى ورغم وجوده على النت الا انى لقيت عمل ديمو بيمثل العمليه دى حيفيد الكثيرين سيناريو الديمو عندك صفحة فى الابليكيشن بتاعك اسمها 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 تطلب منك اختيار ملف لرفعه كما فى الصورة قم باختيار اى ملف عندك ثم اضغط على حفظ ستجد ان الملف تم رفعه وجميع بيانات الملف من ناحية اسمه ونوعه واسم الموظف الذى قام برفعه ظهرت عندك فى الجدول مع امكانية تحميله كما فى الصوره اذا اردت تحميله اضغط على ايقونه التحميل حتظهر لك نافذة التحميل كما فى الصوره حمل البرنامج من المرفقات واى سؤال على اى جزئيه فى تنفيذه حرحب بيه UploadDownloadADF.rar Attachments.txt اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miro_aer بتاريخ: 14 نوفمبر 2011 تقديم بلاغ مشاركة بتاريخ: 14 نوفمبر 2011 جزاك الله خيرا على طرحك للأفكار ونشر العلم ... بس ياريت تحاولى تستخدمى http://commons.apache.org/io/api-1.4/org/apache/commons/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; } اخيرا نتمنى منك ومن المهندس مصطفى ماجد افكار جديدة كل يوم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Hala Salem بتاريخ: 14 نوفمبر 2011 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 14 نوفمبر 2011 الاخ / miro_aer شكرا على مرورك وعلى ملاحظاتك ولو لك اى ملاحظه تانى على المثال قولها اواى سؤال فى اى حاجه فى تنفيذه بالنسبه لميثود IOUtils.toByteArray فانا عارفه ان الميثود دى بتقره ال Input stream وتحوله الى ByteArrayOutputStream لكن عيب الميثود دى انها بتعمل ال Buffer internally و بتحصل مشكله كبيره مع الملفات الضخمه لانك بتقراه كله مره واحده وبالتالى بفضل الطريقه الاولى اللى بتخلينى اتحكم فى حجم ال Buffer واقره من ال input واضع فى ال output لحد ما يخلص بدل ما احمل الملف بالكامل فى الذاكره 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miro_aer بتاريخ: 15 نوفمبر 2011 تقديم بلاغ مشاركة بتاريخ: 15 نوفمبر 2011 اسمحيلى اناقشك فى بعض النقاط عيب الميثود دى انها بتعمل ال Buffer internally و بتحصل مشكله كبيره مع الملفات الضخمه لانك بتقراه كله مره واحده وبالتالى بفضل الطريقه الاولى اللى بتخلينى اتحكم فى حجم ال Buffer طالما انك بتحددى حجم معين لل buffer معنى كده انك بتحملى ملف لايزيد عن هذا ال buffer ........ وده ممكن عمله بأنك تسألى على حجم الملف المراد تحميله انه لايتعدى حجم معينوكمان ده السورس كود بتاع IOUtils ممكن تحددى فيه DEFAULT_BUFFER_SIZE http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html واقره من ال input واضع فى ال output لحد ما يخلص بدل ما احمل الملف بالكامل فى الذاكرهوده اللى بيعمله بالفعل فى الكود لانه مفيش طريقة برمجيا على ما اعتقد يحمل بيها الملف مره واحدة الجميل فى الكلاس انه فيه دوال كتير ممكن نستفيد منها مش لازم فى المثال ده بس ... فى التعامل مع IO Stream انا حبيت اشاركك بعض المعلومات ونجعل القارئ يستفيد اكتر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Hala Salem بتاريخ: 15 نوفمبر 2011 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 نوفمبر 2011 اسمحيلى اناقشك فى بعض النقاط مفيش اى مشكله طالما انك بتحددى حجم معين لل buffer معنى كده انك بتحملى ملف لايزيد عن هذا ال buffer عندما احدد حجم معين لل Buffer اللى حقره واكتب بيه فى المره الواحده فانا بحدد بناء على عوامل كتير غير حجم الملف زى ال performance وال network والسرعه وو….وبالنسبه لحجم الملف انا لا اسال عنه ولكن باضع حجم معين لا يزيد عنه فى ملف ال web.xml وممكن يكون الحجم ده كبير أيضا بالنسبه لحجم ال buffer فانا بحتاج احدد حجم معقول لل Buffer ده عشان اقره واكتب one Buffer بس فى المره فاهمنى لان الميثود دى بتستنى لما يكون عندى الداتا كلها وبعدين تروح كاتباها عموما طريقه Open input stream-open outputstream-create byte buffer واقره واكتب لم تحدث معى اى مشاكل على الاطلاق مع حجم الملفات عكس الطريقه التانيه كما ذكرت سابقا فلماذا لا تجرب استخدام طريقتك مع ملف حجمه مثلا 150MB وشوف شكل ال performance حيبقى عامل ازاى ؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 15 نوفمبر 2011 تقديم بلاغ مشاركة بتاريخ: 15 نوفمبر 2011 توجد بعض النقاط التي تحتاج تصحيح: هالة:بالنسبه لميثود 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 حيبقى عامل ازاى ؟في الدالتين لا توجد مشاكل والنتيجة واحدة وكلاهما صحيح ولكنني أفضل طريقة عمرو لسبب واحد ، أن الكود عبارة عن سطر واحد وبالتالي أسهل على المبرمج في كتابتها وأوفر في الوقت 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
miro_aer بتاريخ: 15 نوفمبر 2011 تقديم بلاغ مشاركة بتاريخ: 15 نوفمبر 2011 جزاك الله خيرا ياباشمهندس اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Corbina بتاريخ: 20 سبتمبر 2013 تقديم بلاغ مشاركة بتاريخ: 20 سبتمبر 2013 (معدل) A very good tutorial.thanks تم تعديل 20 سبتمبر 2013 بواسطة Corbina اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
monte jamaice بتاريخ: 22 أغسطس 2017 تقديم بلاغ مشاركة بتاريخ: 22 أغسطس 2017 سلام عليكم قمت بتحميل هذي المثال وانا اعمل علي jdev11 وعندما اعمل رن للصفحة jsp مش راضية تفتح وبكون loding......... شغال قمتة بعمل صفحة jsf وفتح معي لكن عندما اختار الملف واضغط حفظ مش راضي يحفظ معي لا اعرف ما هو السبب اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
RSU89 بتاريخ: 24 أغسطس 2017 تقديم بلاغ مشاركة بتاريخ: 24 أغسطس 2017 سلام عليكم ..بالنسبه upload اكثر من ملف يعني مثلا لو عندي موظف عندو اكثر من مستند واحد لرفعه مره واحد ماهو السيناريو المتبع .انا بقوم حليت المشكله موقتا برفع الملفات ك rar ارجو الافاده اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 25 أغسطس 2017 تقديم بلاغ مشاركة بتاريخ: 25 أغسطس 2017 تم إضافة هذه الإمكانية في الإصدار الجديد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
enghegazy بتاريخ: 3 أكتوبر 2018 تقديم بلاغ مشاركة بتاريخ: 3 أكتوبر 2018 اذا في احد يقدر يفيدني اني افتح السكانر usb scanner من java لاني بعمل بروجكت ADF scan documents and save it on H.D Using ADF اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sd4it بتاريخ: 8 أكتوبر 2018 تقديم بلاغ مشاركة بتاريخ: 8 أكتوبر 2018 يجب الاستعانة بمكتبة خارجية اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.