الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حزمة تسمح بنقل الملفات و تخزينها

مغلق
بدأه رامي العيساوي في 16 ديسمبر 2005 · 8 رد · 732 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الكثير من المشاريع التي تطرح يوميا باحلام كبيرة و حماس مشتعل و اثبت الواقع فشل هذه

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

ساحاول نشر مثل هذه المشاريع فهي بتراكمها مع الزمن ستحقق الفائدة الكبيرة المنشودة

لذا هذا اول مشروع بسيط سوف نعمله و الفائدة المرجوة منه جيدة ..

وصف مختصر للمشروع:

عبارة عن Beans تستخدم لنقل و حفظ الملفات و البيانات من سيرفر الى ( سيرفر آخر او

جهاز العميل )

الفوائد المتوقعة:

عندما تنتهي سوف نستطيع استخدم الحزمة مع تطبيقات الـ Servlet لكي تسهل عملية نسخ

الملفات و توفير حماية مناسبة للعميل

مثال: اتذكر طلب العديد من الاخوة في سوريا ان المواقع لا تقبلهم لانهم من بلاد معينة و هذا ما

سيحل الموضوع تقوم الحزمة بالاتصال بالسيرفر التابع للشركة المراد سحب البينات منها و من ثم

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

ينسخه مباشرة الى جهاز العميل الذي طلب الملف.

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

في المكان المخصص لها و يتم تحديث البرنامج.

و يوجد فوائد اخرى طبعا و هي كثيرة و لست بصدد ذكرها جميعا الآن

و انا قد طبقت هذه الفكرة فعلا منذ سنتين كخدمة من خلال موقعي الشخصي و لكن الخدمة كانت

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

طرف الآخر و كانت تؤمن تصفح آمن لان الآبي كان يظهر للسيرفر و ليس للعميل الذي يستفيد فعلا

من التصفح!! طبعا الخدمة كانت لا توفر امكانية عرض الصور لسببين عدم الاستعمال الغير

اخلاقي و السبب الثاني هو لان الموضوع مبين عليه صعب و يمكن ما اعرف اعمله :)

و هذا هو الكود العجيب الذي يقوم بهذه المهمة :

<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>
<%
String url=request.getParameter("url");
URL now = new URL(url);
	BufferedReader in = new 

BufferedReader(
    new 

InputStreamReader(
    

now.openStream()));
	String inputLine;
	while ((inputLine = in.readLine()) 

!= null) out.println(inputLine);
	in.close();
%>

الكود طبعا مكتوب بصيغة JSP لان الهدف هو التصفح لذا افضل و اسهل خيار متوفر كان

استخدام JSP

========================

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

عدلت الكود السابق لكي يناسب الاهداف و الفوائد التي سبق و ذكرتها

فاصبح كالتالي :

package ws.ramy;
import java.io.*;
import java.net.*;
public class Dload
{public static String status;
  public void get(String url,String fn)
 {
     
     try{   
     URL now= new URL(url);
     String inputLine;
    BufferedReader in = new 

BufferedReader(new 

InputStreamReader(now.openStream()));
    FileWriter fw=new FileWriter("d:/"+fn); 

// where to write the coming file

while ((inputLine = in.readLine()) != null)
  fw.write(inputLine);
    	in.close();
        fw.close();
}
     catch (IOException e){status= 

e.getMessage();}
     
     
 }

}

و عند التجربة ينتج ملف معطوب (ترميز مختلف )... و من وقتها لم اعد المحاولة اعتقد بان الحل بسيط و

يحتاج للنظر مرة اخرى و لكنني لا اطمح فقط لتصحيح الخطأ بل اطمح الى تحقيق الفائدة المذكورة

سابقاً

و كما قلت مشروع صغير و مفيد

بانتظار المشاركين ( نرحب في الفريق الغرضي التوجه هذه المرة ) B)

تم تعديل هذه المشاركة بواسطة رامي العيساوي في 16 ديسمبر 2005 في 04:17

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#3

جرب أن تقرأ ملفا معينا وليكن سورة مثلا من سطح المكتب بنفس الطريقة.. هل تنجح عملية النسخ؟

#4

جربت ان اضع ملف على سيرفر المحلي و طلبت من البرنامج نسخه ووضعه الى جانبه..

و ظهر الملف معطوب و بغير ترميز

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#5

بسم الله الرحمن الرحيم

اف منتدى الجافا -- ووقعت بين الخبراء -- والله زمان

أحييكم كثيرا خصوصا الأخ أبو مازن في مساعدته لي في موضوع دليل التلفونات والعربي في الـ Java2ME وأعتذر منه ومن الأخوة الأعضاء على اخلالي في الوعد بادراج البرنامج بعد اكتماله في المنتدى لاني فقدت البرنامج لكن الحمد لله اني استفدت منه الكثير اضافة انه أصحاب البرنامج ( مشروع تخرج ) أخذوا تقدير 93 )

المهم اعجبني عنوان الموضوع على شريط المنتدى فدخلت عليه

والصحيح ما اثار انتباهي اكثر هو انني اعمل حاليا على برنامج نسخ الملفات على الشبكة ( VB )

ناتج خبرتي الضئيلة انه قراءة الملفات كأسطر ترجع قيم نصيه ( وكما تعلمون أن ملفات الصور والفيديو أو أي ملفات أخرى غير نصيه قد تستعمل حروف ليست نصيه ) فيستحسن أن نقرأها بالبايت

يفترض أن البرنامج الذي كتبته يقوم بقراءة الملفات النصية بدون أية مشاكل

أنا لا أعرف كيف يتم ذلك بالجافا

في برنامجي قمت بتعريف ARRAY نوعها BYTE وحددت حجمها 1MB وكنت أقرأ 1MB ثم أرسلها الى الخادم الذي يستقبلها ويخزنها في ملف عنده طبعا حتى أصل الى أخر قسم الذي قد يقل حجمه عن 1MB فبالتالي أعيد تعريف الـ ARRAY حسب حجم القسم الأخير ويقوم الخادم أصلا بتفحص حجم كل قسم ويعيد تعريف المصفوفه حسب حجمه ( أعتقد في الجافا Buffere يقوم بذلك دون الحاجة الى التعريف وتحديد الحجم ) فبالتالي يتطابق الملف الأول والثاني تماما

تأكد من أن الملف الأول ( المصدر ) يساوي في الحجم الملف الثاني ( النسخه ) لتتأكد من فكرتي لأني لاحظت هذه المشكلة في برنامجي قبل أن أعالجها

اذا أردتم البرنامج ( لم يكتمل طبعا ، وبالفيجوال بيسك ) تحت أمركم .

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

تم تعديل هذه المشاركة بواسطة البريشي في 18 ديسمبر 2005 في 16:15

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#6
البريشي كتب:
ناتج خبرتي الضئيلة انه قراءة الملفات كأسطر ترجع قيم نصيه ( وكما تعلمون أن ملفات الصور والفيديو أو أي ملفات أخرى غير نصيه قد تستعمل حروف ليست نصيه ) فيستحسن أن نقرأها بالبايت
:( :( :( :(

عرف الماء بعد عناء بأنه بالماء :lol: :lol: :lol: :lol:

المهم تكونوا فاهمين قصدي (h) (h)

********************* ******************** *********************

(( أشــهد أن لا اله الا الله ..... وأشهد أن محمد رسول الله ))

********************* ******************** *********************

لا تقـل من أيـن أبدأ

طـاعـة الله الـبدايـة

***

لا تقـل أين طـريـقي

شــرع الله الهـدايـة

***

لا تـقـل أيـن نعـيمي

جـنـة الله كـفـايـــــة

***

لا تقـل في الغـد أبدأ

ربمـــا تأتـي النهـايـــة

**************** **************** ****************

#7

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

void copy(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);
    
        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }

بالتوفيق!

#8

عزيزي ابو مازن...

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

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

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#9

الفكرة التي يجب اضافتها هي ان نسمح بتحميل الملف بشكل مباشر

يعني يدخل المستخدم الى صفحة JSP التي تستعين بالحزمة هذه و يعطي الصفحة عنوان الملف

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

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

و ذلك تفادي للمشاكل الامنية المتعلقة في التخزين على السيرفر

و تفادي المساحات الكبيرة و خصوصا اذا كثر المستخدمين و كبرت احجام الملفات

و اسرع ايضا بالنسبة للمستخدم ان يتم التخزين مباشرة على جهازه

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

هذا الموضوع مغلق.

مواضيع مشابهة