Hướng dẫn tạo ứng dụng FTP Server – FTP Client (IIS vs JAVA)


Chào các bạn , nếu các bạn muốn tạo một ứng dụng FTP client để kết nối đến một FTP server mình nghỉ đây sẻ là một bài viết khá hữu ích cho ai muốn làm 1 ứng dụng FTP. (Mình sử dụng JAVA).

Mình nghỉ đây là một ứng dụng các bạn có thể làm Giao diện bằng Swing / HTML / Servlet / JSP một bài tập lớn cho môn Java về một ứng dụng FTP để giao tiếp giữa 2 máy tình với nhau ( Máy Server – Máy Client). Củng sẻ rất là thú vị.

Bài viết khá dài đầu tiên mình sẻ tạo ra 1 FTP server với IIS (Windows 7).

Step 1 : Các bạn gỏ cmd check ip máy của mình gỏ lệnh ipconfig như hình

1

Địa chỉ máy của mình là 192.168.1.49

Step 2 : Các bạn vào control panel -> programs and Features

:2

Step 3: Click Turn Windows features on or off

3

Step 4 : Check ON (FTP Server)

4

Step 5

5

Step 6 : Click item as image

6

Step 7 : Right click trên item Site và click Add FTP Site ( Create site ftp ) cho mình

7

Step 8: name của ftp và folder FTP (đây sẻ là folder cho việc quản lí file của bạn)

8

Step 9 : Gỏ IP adress của máy bạn và chọn loại No SSL.

9

Step 10 : chọn loại user có thể connect to FTP ( Trên windows bạn có thể tạo rất nhiều account mình củng sẻ hướng dẫn cho các bạn tạo thêm 1 new account )

10

Step 11: Chúng ta sẻ  cho phép FTP thông qua được Firewall and OFF file wall

11

12

13

14

Step 12: Mình sẻ hướng dẫn cho các bạn tao account để sử dụng truy cập đến FTP Server Các bạn làm theo các bước như hình mình tao một accout hoanghai với quyền admin18

15

16

17

19

Step 13 : Chúng ta sẻ add những user nào có quyền truy cập đến FTP server của chúng ta tạo ra lúc nảy.

20

21

22

23

OK Chúng ta đả thực hiên xong các bước quan trong để tạo nên FTP server.

Chúng ta truy cập đến FTP Server của chúng ta bằng cách gỏ link trực tiếp trên URL ftp://172.168.1.49 ( và login bằng account chúng ta cấp quyền truy cập FTP server). Kết quả như hình

24

25

Để kiểm tra mình thử copy 2 hình ảnh đến folder FTP mình tạo từ trước (Folder thaihoanghai ) trong nhửng bước đầu tiên.

và refresh lại page

26

Xong ( Chúng ta đả có 1 FTP Server Rất OK).

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

Sau đây mình sẻ dùng JAVA viết 1 ứng dụng đơn giản

Delete file / Download file / Upload file to FTP Server.

Để support cho các ứng dụng các bạn down 2 library cấn thiết (Lên google gỏ và download file jar bỏ vào ứng dụng nház)

1 – commons-net.jar

2- oro.jar

Cấu trúc ựng dụng như sau :

27


package thaihoanghai.wordpress.com;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class FTPTransfer {
// userName connect
private String userName;
// password connect
private String password;
// IP Address connect
private String ipAddress;
// Port connect
private int connectPort;
// FTP client
private FTPClient ftpClient = null;

/**
*
* @param userName
* @param password
* @param ip
* @param port
*/
public FTPTransfer(String userName, String password, String ip, int port) {
this.userName = userName;
this.password = password;
this.ipAddress = ip;
this.connectPort = port;
}
/**
* Function connection to FTP server
*/
public boolean connect() {
boolean flag = true;
if (ftpClient == null) {
int reply;
try {
ftpClient = new FTPClient();
ftpClient.setDefaultPort(connectPort);
ftpClient.connect(ipAddress);
ftpClient.login(userName, password);
reply = ftpClient.getReplyCode();
ftpClient.setDataTimeout(120000);

if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
flag = false;
}

} catch (SocketException e) {
flag = false;
e.printStackTrace();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}
}
return flag;
}

/**
* Close connection FTP Server
*/
public void closeConnect() {
try {
if (ftpClient != null) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}

}

/**
* Download file from FTP server
* @param remotePath
* @param fileName
* @param localPath
* @return
*/
public boolean downFile(String remotePath, String fileName, String localPath) {

FTPFile[] fs;
boolean downResult = false;
try {
ftpClient.changeWorkingDirectory(remotePath);
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
File localFile = new File(localPath + File.separator
+ ff.getName());

FileOutputStream is = new FileOutputStream(localFile);
downResult = ftpClient.retrieveFile(ff.getName(), is);
is.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return downResult;
}

/**
* Update file to FTP server
* @param path : path on FTP server
* @param filename : file name upload to FTP server
* @param localFilePath : File at local machine
* @return result : success or fail
*/
public boolean upFile(String path, String filename, String localFilePath) {
boolean upResult = false;
try {
FileInputStream in = new FileInputStream(new File(localFilePath));
ftpClient.changeWorkingDirectory(path);
upResult = ftpClient.storeFile(filename, in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return upResult;
}

/**
* Delete file ( in folder FTP server)
* @param file : File name delete.
* @return result : success or fail
*/
public boolean deleteFile(String file){
boolean deleteResult = false;
try {
deleteResult =ftpClient.deleteFile(file);
} catch (IOException e) {
e.printStackTrace();
}
return deleteResult;
}

public static void main(String[] args) {
String userName = "hoanghai";
String password = "hehehehohoho";
String ip = "192.168.1.49";
int port = 21;

FTPTransfer ftp = new FTPTransfer(userName, password, ip, port);
ftp.connect();// connect to FTP Server
System.out.println("Connection FTP server (" + ip + ") success");

boolean flag = ftp.deleteFile("love.jpg");
if(flag)
System.out.println("Delete file success");
else
System.out.println("Delete file fail");
// Execute upload file from local machine to FTP server
flag = ftp.upFile("/", "Logdata.txt", "F:/data/Logdata.txt");
if(flag)
System.out.println("Upload file success");
else
System.out.println("Upload file fail");

// execute download file from FTP server to local machine
flag = ftp.downFile("/", "Logdata.txt", "./data/");

if(flag)
System.out.println("Download file success");
else
System.out.println("Download file fail");

// close connection
ftp.closeConnect();
}
}

Kết quả run của ứng dụng :

28

Chúng ta kiểm tra lại FTP Server (ftp://192.168.1.49/)

29 30

Source code : Download

Nếu có bất kì problem nào hay có ý kiến nào làm cho bài viết tốt hơn hãy để lại comment🙂

Chúc các bạn có thể tận hưởng.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: