โครงการที่ฉันเคยทำในอดีตอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP และตอนนี้ฉันตรวจสอบแล้ว มันค่อนข้างง่ายและคุณสามารถเข้าใจได้ในครั้งเดียว
สภาพแวดล้อม: ก่อนอื่นติดตั้งเซิร์ฟเวอร์ FTP ก่อน ฉันกำหนดค่าไว้ในพื้นที่ใน Win8 ด้วย IIS คุณสามารถค้นหาเอกสารการติดตั้งใน Baidu
1. สร้างไฟล์การกำหนดค่า FTP ในไดเรกทอรีโครงการของคุณไดเรกทอรีดังที่แสดงด้านล่าง
01 ftpconfig.properties:
ftpip = 10.73.222.29
ftpport = 21
ftpuser = wp
ftppwd = 04143114wp
ftpremotepath = d: // แบ่งปัน
02 คลาสที่อ่านเนื้อหาเฉพาะใน ftpconfig.properties:
แพ็คเกจ com.java.core.util; นำเข้า java.io.ioexception; นำเข้า java.io.inputstream; นำเข้า java.util.properties;/*** @author wangpei* @version สร้างขึ้น: 6 พฤษภาคม 2017 เวลา 9:42:40 น. คุณสมบัติคุณสมบัติส่วนตัว Public ReadftPProperties () {is = this.getClass (). getResourceasstream ("/ftpconfig.properties"); // อ่านไฟล์การกำหนดค่าลงในคุณสมบัติสตรีมอินพุต = คุณสมบัติใหม่ (); ลอง {properties.load (คือ); } catch (ioexception e) {system.out.println ("ไฟล์การกำหนดค่าไม่มีอยู่ .. "); E.PrintStackTrace (); } ในที่สุด {ถ้า (null! = IS) {ลอง {is.close (); } catch (ioexception e) {system.out.println ("สตรีมปิดล้มเหลว .. "); E.PrintStackTrace (); }}}} สตริงสาธารณะ getip () {// รับคุณสมบัติการส่งคืนที่อยู่ IP ของเซิร์ฟเวอร์ FTP GetProperty ("FTPIP"); } Public String getPort () {// รับพอร์ตของคุณสมบัติการส่งคืนของเซิร์ฟเวอร์ FTP.getProperty ("ftpport"); } public String getUser () {// รับ FTP เข้าสู่ระบบชื่อผู้ใช้ชื่อกลับ Properties.getProperty ("ftpuser"); } สตริงสาธารณะ getpwd () {// รับรหัสผ่านเข้าสู่ระบบของคุณสมบัติการส่งคืนของเซิร์ฟเวอร์ FTP GetProperty ("FTPPWD"); } สตริงสาธารณะ getRemotePath () {// รับไดเรกทอรีที่ไฟล์ถูกเก็บไว้ในเซิร์ฟเวอร์ FTP จะถูกส่งคืนคุณสมบัติ GetProperty ("FTPREMOTEPATH"); -03 คลาสอินเตอร์เฟสสำหรับการอัปโหลดและดาวน์โหลดไฟล์
แพ็คเกจ com.java.web.service; นำเข้า java.io.inputstream; นำเข้า org.apache.commons.net.ftp.ftpclient; นำเข้า com.java.core.util.readftpproperties;/** * @author wangpei * @version อินเตอร์เฟส ftpservice { / * * เข้าสู่ระบบไปยัง ftp * / public boolean loginftp (ไคลเอนต์ ftpclient, readftpproperties rfp); / * * ออกจากระบบ FTP */ Public Boolean Logout (FTPClient Client); /// * * อัปโหลดไฟล์ไปยัง remotePath ซึ่งมีชื่อใน FTP คืออินพุต */ บูลีนสาธารณะ uploadfile (FTPClient ไคลเอ็นต์ / * * ดาวน์โหลดชื่อไฟล์ไฟล์จากไดเรกทอรี RemotePath */ Public InputStream DownFileByftp (ไคลเอนต์ ftpClient, String RemotePath, ชื่อไฟล์สตริง); /** ลบไฟล์ด้วยชื่อพา ธ ของไดเรกทอรีบน ftp*/ บูลีนสาธารณะ delfile (ไคลเอนต์ ftpclient, pathname สตริง);}04 คลาสการใช้งานอินเตอร์เฟสสำหรับการอัปโหลดและดาวน์โหลดไฟล์
แพ็คเกจ com.java.web.service.serviceimpl; นำเข้า java.io.ioexception; นำเข้า java.io.inputstream; นำเข้า java.io.unsupportencodingexception; นำเข้า java.net.socketexception; org.apache.commons.net.ftp.ftpfile; นำเข้า com.java.core.util.readftpproperties; นำเข้า com.java.web.service.ftpservice;/*** @author wangpei* @version Boolean Loginftp (ไคลเอนต์ ftpClient, readftpproperties rfp) {string ftpip = rfp.getip (); สตริง ftpport = rfp.getport (); สตริง ftpuser = rfp.getUser (); สตริง ftppwd = rfp.getpwd (); // สตริง fgtpremotepath = rfp.getRemotePath (); บูลีน b = false; ลอง {client.connect (ftpip, integer.parseint (ftpport)); } catch (numberFormatexception e) {system.out.println ("ไม่สามารถเชื่อมต่อกับ ftp"); กลับเท็จ; } catch (socketexception e) {system.out.println ("ไม่สามารถเชื่อมต่อกับ ftp"); กลับเท็จ; } catch (ioexception e) {system.out.println ("ไม่สามารถเชื่อมต่อกับ ftp"); กลับเท็จ; } catch (ioexception e) {system.out.println ("ไม่สามารถเชื่อมต่อกับ ftp"); กลับเท็จ; } client.setControlencoding ("UFT-8"); ลอง {b = client.login (ftpuser, ftppwd); } catch (ioexception e) {system.out.println ("ข้อผิดพลาดล็อกอิน FTP"); ออกจากระบบ (ไคลเอนต์); // logout/disconnect ลิงก์เซิร์ฟเวอร์ FTP ส่งคืนเท็จ; } return b; } การออกจากระบบบูลีนสาธารณะ (ไคลเอนต์ ftpClient) {boolean b = false; ลอง {b = client.logout (); // logout client.disconnect (); // disconnect} catch (ioexception e) {return false; } return b; } Public Boolean UploadFile (FTPClient Client, String RemotePath, String FileNewName, InputStream InputStream, ReadftPProPerties RFP) {Boolean B = FALSE; ลอง {client.setFileType (ftpClient.binary_file_type); client.enterLocalPassiveMode (); if (remotepath! = null &&! "". equals (remotepath.trim ())) {string [] paths = remotepath.split ("/"); สำหรับ (String onePath: PATHS) {ถ้า (onePath == null || "" .Equals (onepath.trim ())) {ดำเนินการต่อ; } onePath = สตริงใหม่ (onepath.getBytes ("UTF-8"), "ISO-8859-1"); System.out.println ("onePath =" + onePath); if (! client.changeworkingDirectory (onePath)) {client.makedirectory (onepath); // สร้างไคลเอนต์ไดเรกทอรีเซิร์ฟเวอร์ FTP Client.changeWorkingDirectory (onePath); // เปลี่ยนไดเรกทอรีเซิร์ฟเวอร์ FTP }}} b = client.storeFile (สตริงใหม่ (fileNewName.getBytes ("UTF-8"), "ISO-8859-1"), inputStream); } catch (unsupportencodingexception e) {return false; } catch (ioexception e) {return false; } return b; } Public InputStream DownFileByftp (ftpClient ftpClient, remotepath สตริง, ชื่อไฟล์สตริง) {ftpfile [] fs; InputStream คือ = null; ลอง {// ตั้งค่าโหมด Passive ftpClient.EnterlocalPassiveMode (); // ตั้งค่า ftpclient.setFileType (ftp.binary_file_type); // ตั้งค่ารูปแบบแก้ไข ftpClient.setControlencoding ("UTF-8"); remotePath = remotepath.substring (0, remotepath.lastindexof (ชื่อไฟล์)); fs = ftpclient.listfiles (remotepath); // ไดเรกทอรีเป้าหมายแบบเรียกซ้ำสำหรับ (ftpfile ff: fs) {ถ้า (ff.getName (). เท่ากับ (ชื่อไฟล์)) {// ค้นหาไฟล์เป้าหมายคือ = ftpClient.retrieveFilestream "ISO-8859-1")); หยุดพัก; }}} catch (ioexception e) {e.printstacktrace (); } return คือ; } บูลีนสาธารณะ delfile (ftpClient ftpClient, pathname สตริง) {boolean b = false; ลอง {b = ftpClient.deleteFile (ชื่อพา ธ ); กลับ B; } catch (exception e) {return false; } ในที่สุด {logout (ftpClient); // exit/disconnect ftp server link}}}รหัสเป็นเรื่องง่ายที่จะเข้าใจมันควรจะเข้าใจโดยการอ่านครั้งเดียว ฉันจะไม่วิเคราะห์โดยเฉพาะที่นี่ส่วนใหญ่ดูความคิดเห็นในรหัส
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น