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

تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API

اذهب الى الأسفل

تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API Empty تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API

مُساهمة من طرف أحمد مناع الأربعاء فبراير 12, 2014 12:07 pm

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


أهلا وسهلا بكم إخوانى الكرام ... درس اليوم عن كيفية تعلم كيفية رفع الملفات من جهاز الكمبيوتر على سرفر الخاص بك عن طريق بروتوكول نقل المفات FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API و هى أحد المكتبات مفتوحة المصدر التى يعتمد عليها مطورى الجافا التى تتيح لهم رفع الملفات على الخادم بكل سهولة

ليس هذا فحسب بل ان تلك المكتبة تستطيع من خلالها أجراء عمليات كثيرة على الخادم من خلال البروتوكول FTP منها : إنشاء اتصال بالخادم , الحصول على كافة الملفات على الخادم ,تحميل الملفات من الخادم ,إنشاء وحذف دلائل على الخادم , حذف ملفات على الخادم ......الخ

اليوم سنتخدم تلك المكتبة فى كيفية رفع ملف الى الخادم حيث توفر تلك المكتبة الفئة FTPClient و التى لديها 6 طرق أو اساليب لنقل ملف محلي إلى ملقم بعيد عبر بروتوكول  FTP وهما على النحو التالى :



  •  boolean storeFile(String remote, InputStream local)
  •  OutputStream storeFileStream(String remote)
  •  boolean storeUniqueFile(InputStream local)
  •  boolean storeUniqueFile(String remote, InputStream local)
  •  OutputStream storeUniqueFileStream()
  •  OutputStream storeUniqueFileStream(String remote)


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

أولا : كيفية رفع الملفات بالطريقة الاولى storeFile

1_ إستيراد مكتبات العمل اللازمة

الكود:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
 
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;

2_ داخل الدالة الرئسية نقوم بالاعلان عن المتغيرات التالية :

الكود:
String server = "www.myserver.com";
        int port = 21;
        String user = "user";
        String pass = "pass";

المتغير الاول server لتخزين عنوان الخاد فيه
المتغير الثانى port لتخزين المنفذ للخادم .....الافتراضى 21
و المتغير الثالث و الرابع لتخزين اسم المستخدم و كلمة المرور للخادم

3_ بعد ذلك نقوم بانشاء مثيل جديد من الفئة FTPClient و ذلك على النحو التالى :

الكود:
FTPClient ftpClient = new FTPClient();

4_ نقوم بانشاء اتصال مع الخادم من خلال الاسلوب connect مع تمرير عنوان الاتصال و رقم المنفذ لهذا الاسلوب على النحو التالى :
الكود:
ftpClient.connect(server, port);

5_ نقوم بعمل تسجيل دخول للخادم باستخدام الاسلوب login مع تمرير اسم المستخدم و كلمة المرور على النحو التالى :

الكود:
ftpClient.login(user, pass);

6_ افتراضيا يقوم بروتوكول FTP بتأسيس اتصال من خلال فتح منفذ على العميل ويسمح الملقم الاتصال من هذا المنفذ. وهذا ما يسمى الوضع النشط ... ولكن عادة ما يتم حظرها من قبل جدار الحماية لذلك قد لا تستطيع رفع الملفات.... لحسن الحظ فإن بروتوكول FTP لديه طريقة أخرى وهى الوضع الخامل أو السلبي بحيث لا يتم الحظر من قبل جدار الحماية.....لذلك فمن المستحسن التبديل إلى الوضع الخامل أو السلبي المحلية قبل نقل البيانات، بواسطة استدعاء الأسلوب enterLocalPassiveMode على النحو التالى :

الكود:
ftpClient.enterLocalPassiveMode();

7_ نقوم بتحديد نوع الملف أما ان يكون [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أو [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و ذلك من خلال الاسلوب setFileType ويستخدم لرفع الملفات النوع الافتراضي الاول هو ASCII_FILE_TYPE  ولكن يجب أن يتم تعيين للنوع الثنائي من أجل العمل مع أي ملفات و ذلك على النحو التالى :

الكود:
ftpClient.setFileType([ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

8_ تحديد أسم و مسار الملف المراد رفعة من على جهازك الخاص على النحو التالى :

الكود:
File firstLocalFile = new File("E:/LICENSE.txt");

9_تعين المسار الذى سيتم الرفع عليه :

الكود:
String firstRemoteFile = "LICENSE.txt";

الكود أعلاه يوضح اننا سنقوم برفع الملف على الديل الجزر root

10_ استخدام الكائن InputStream  لبدء قارئة الملف  :
الكود:
InputStream inputStream = new FileInputStream(firstLocalFile);


11_ اسدعاء الطريقة storeFile لرفع الملف :

الكود:
boolean done = ftpClient.storeFile(firstRemoteFile, inputStream);

و الكود الكامل للمثال على النحو التالى :

الكود:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
 
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;



public class NewMain {

    public static void main(String[] args) {
        
        String server = "www.myserver.com";
        int port = 21;
        String user = "user";
        String pass = "pass";
 
       FTPClient ftpClient = new FTPClient();
        try {
 
           ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();
 
           ftpClient.setFileType([ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
 
           // APPROACH #1: uploads first file using an InputStream
            File firstLocalFile = new File("E:/LICENSE.txt");
 
           String firstRemoteFile = "LICENSE.txt";
            InputStream inputStream = new FileInputStream(firstLocalFile);
 
           System.out.println("Start uploading first file");
            boolean done = ftpClient.storeFile(firstRemoteFile, inputStream);
            inputStream.close();
            if (done) {
                System.out.println("The first file is uploaded successfully.");
            }
 
           
            inputStream.close();
            
            }
 
       } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
 
   }
}


ثانيا : أستخدام الطريقة storeFileStream لرفع الملف


الكود الكامل على النحو التالى :

الكود:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
 
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;



public class NewMain {

    public static void main(String[] args) {
        
        String server = "www.myserver.com";
        int port = 21;
        String user = "user";
        String pass = "pass";
 
       FTPClient ftpClient = new FTPClient();
        try {
 
           ftpClient.connect(server, port);
            ftpClient.login(user, pass);
            ftpClient.enterLocalPassiveMode();
 
           ftpClient.setFileType([ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
 
     
            File firstLocalFile = new File("E:/LICENSE.txt");
 
           String firstRemoteFile = "LICENSE.txt";
            InputStream inputStream = new FileInputStream(firstLocalFile);
 
           System.out.println("Start uploading first file");
            OutputStream outputStream = ftpClient.storeFileStream(firstRemoteFile);
            byte[] bytesIn = new byte[4096];
            int read = 0;
 
           while ((read = inputStream.read(bytesIn)) != -1) {
                outputStream.write(bytesIn, 0, read);
            }
            inputStream.close();
            outputStream.close();
 
           boolean completed = ftpClient.completePendingCommand();
            if (completed) {
                System.out.println("The second file is uploaded successfully.");
            }
 
       } catch (IOException ex) {
            System.out.println("Error: " + ex.getMessage());
            ex.printStackTrace();
        } finally {
            try {
                if (ftpClient.isConnected()) {
                    ftpClient.logout();
                    ftpClient.disconnect();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
 
   }
}

لاحظ الفرق بينهما بنفسك

تحياتى لكم  Very Happy

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API Empty رد: تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API

مُساهمة من طرف لمار عادل السبت يناير 10, 2015 2:26 pm

شكرا لك استاذى
لمار عادل
لمار عادل
..
..

تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى