تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: التعامل مع الشبكات Java Networking
صفحة 1 من اصل 1 • شاطر
تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API
بسم الله الرحمن الرحيم
أهلا وسهلا بكم إخوانى الكرام ... درس اليوم عن كيفية تعلم كيفية رفع الملفات من جهاز الكمبيوتر على سرفر الخاص بك عن طريق بروتوكول نقل المفات 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();
}
}
}
}
لاحظ الفرق بينهما بنفسك
تحياتى لكم

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
رد: تعلم كيفية رفع الملفات على سرفر FTP من خلال تطبيفات الجافا بإستخدام Apache Commons Net API
شكرا لك استاذى
لمار عادل- ..
- تاريخ التسجيل : 29/05/2013
المساهمات : 28
النقاط : 46
التقيم : 2
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: التعامل مع الشبكات Java Networking
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» مدرس رياضيات متوسط ثانوي 97234924 بالكويت
» أفضل موقع تأجير سيارات في مصر
» مدرس رياضيات متوسط ثانوي 97234924 بالكويت
» شركة آي بي إس للخدمات الاستشارية المالية وتكنولوجيا المعلومات
» ادارة متجرك الالكتروني
» مدرس انجليزي متوسط ثانوي 97234912 بالكويت
» شركة IBS للاستشارات الاقتصادية والادارية
» أحصل ملبغ مالى "رمزي " نظير مشاركاتك و مقالاتك بالمنتدي
» "أحلامنا المرآة: فك رموزها واستكشاف عمق المعاني"