Vor ein paar Tagen habe ich ein Projekt gemacht. Der Client und der Administrator wurden zusammen geschrieben und denselben Server geteilt. Die vom Client hochgeladenen Dateien befanden sich alle auf der Festplatte des Servers. Lao schlug lange vor, den Client und die Administratorseite zu trennen, und zu diesem Zeitpunkt gab es ein Problem mit der Speicherung der vom Benutzer hochgeladenen Anhänge. Offensichtlich ist es unrealistisch, APK -Dateien zu speichern, die bis zu Hunderten von M in der Datenbank sind. Nachdem Sie sich lange überprüft haben, ist es der schnellste Weg, einen FTP -Server für die Übertragung von Dateien an beiden Enden einzurichten.
Der spezifische Prozess ist, dass sich der Benutzer in den externen Netzwerk -Client anmeldet und die Datei auf die Festplatte für externe Netzwerkserver hochlädt. Gleichzeitig greift die Datei über den externen Netzwerkserver auf den FTP -Server des Intranet -Administratorservers zu und übergibt ihn an die Intranet -Server -Festplatte. Auf diese Weise kann der Intranet -Server die hochgeladenen Dateien verschlüsseln und unterschreiben und die Dateien dann über FTP an die Festplatte für externe Netzwerkservers übergeben, damit Benutzer andere Vorgänge ausführen können.
Die in der spezifischen Implementierung verwendeten Tools: Serv-U. Serv-U ist ein Tool, das uns erleichtert, einen FTP-Server unter Windows einzurichten. Befolgen Sie nach dem Herunterladen und Crack die Schritte, setzen Sie die IP, den Port, das Kontokennwort, den Festplattenpfad, der FTP -Zugriff, Betriebsberechtigungen usw. ermöglicht, und Sie können ihn verwenden. Wählen Sie beim Testen der IP 127.0.0.1 und beim Testen der IP im Intranet Wählen Sie 192.168.0.x.
Bei der Implementierung des Java-Projekts schrieb ich selbst eine Toolklasse und verwendete das Commons-Net-Paket von Apache, das Funktionen hochladen, heruntergeladen und löscht. Beigefügter Code:
Paket App.ftp; Import Java.io.file; import Java.io.FileInputStream; importieren java.io.filenotfoundException; importieren java.io.fileoutputStream; importieren java.io.ioException; importieren java.io.inputstream; importieren java.io.outputstream; import org.apache.commons.net.ftp.ftpclient; import org.apache.commons.net.ftp.ftpfile; import org.apache.commons.net.ftp.ftpreply; /** * FTP server tool class* */ public class FTPUtils { /** * Upload file to FTP server* * @param url * Server IP address* @param port * Server port* @param userName * User login name* @param password * User login password* @param storePath * Server file storage path* @param fileName * Server file storage name* @param is * File input stream* @return * <b> true </b>: erfolgreich hochladen* <br/>* <B> Falsch </b>: Upload fehlgeschlagen*/public static boolean storefile (String -URL, int Port, String -Benutzername, String -Kennwort, String StorePath, String -Filename, InputStream) {Boolean Ergebnis = Falsch; Ftpclient ftp = new ftpclient (); Versuchen Sie es {// Wenn Sie eine Verbindung zum Server herstellen, können Sie mit 21 standardmäßig FTP.Connect (URL, Port) anschließen. // Melden Sie sich beim Server ftp.login (Benutzername, Passwort) an; // Bestimmen Sie, ob der Rückgabecode legal ist, wenn (! Ftpreply.ispositiveCompletion (ftp.getreplycode ())) {// Die Verbindung trennen, wenn illegal ftp.disconnect (); // das Programmrückgabeergebnis beenden; } // Bestimmen Sie, ob das FTP -Verzeichnis existiert. Wenn es nicht vorhanden ist, erstellen Sie ein Verzeichnis, einschließlich des Erstellens eines Multi-Level-Verzeichniszeichens S = "/"+StorePath; String [] Dirs = S.Split ("/"); ftp.changeworkingDirectory ("/"); // Überprüfen Sie, ob das Verzeichnis in Ordnung ist. Wenn es nicht existiert, erstellen Sie ein Verzeichnis für (int i = 1; Dirs! = Null && i <Dirs.Length; i ++) {if (! Ftp.changeworkingDirectory (Dirs [i])) {if (ftp.makedirectory [i]) {if (! }} else {return false; }}} // Dateioperation Verzeichnis ftp.changeWorkingDirectory (StorePath); // Dateityp festlegen, binäre ftp.setFiletype (ftpclient.berary_file_type); // Puffergröße ftp.setbufferSize (3072) festlegen; // Datei result = ftp.storefile hochladen (Dateiname, IS); // Schließen Sie den Eingangsstrom is.close (); // melden Sie den Server ftp.logout () ab; } catch (ioException e) {e.printstacktrace (); } endlich {try {// prüfe, ob (null! } // prüfen, ob die Verbindung besteht, wenn (ftp.isconnected ()) {// Die Verbindung ftp.disconnect () abnehmen; }} catch (ioException e) {e.printstacktrace (); }} Rückgabeergebnis; }/** * Datei Datei vom FTP -Server auf lokal herunterladen * * @param url * Server IP -Adresse * @param Port * Server -Port * @param username * Benutzeranmeldung Name * @param Passwort * Benutzeranmeldung Passwort * @param remotepath * Server -Dateispeicher * @param FileName * Server -Datei -Speicher * @Param Lokalpath * lokaler Dateispeicherpath * @return -Path * @return -Path * @Return -Path * @return -Path * @@return -Pfad @ -BLEURNAUS: <b> false </ b>: Download fehlgeschlagen*/ public static boolean retrieveFile (String -URL, int Port, String -Benutzername, String -Kennwort, String remotepath, String -Dateiname, String LocalPath) {boolean result = false; Ftpreply.ispositiveCompletion (ftp.getreplycode ()) {// trennen Sie die Verbindung, wenn der Port nicht legal ist; // das Programmrückgabeergebnis beenden; } // Setzen Sie das Dateioperationsverzeichnis ftp.changeworkingDirectory (remotepath); // Setzen Sie den Dateityp, binary ftp.setfiletype (ftpclient.berary_file_type); // Setzen Sie die Puffergröße ftp.setbufferSize (3072); // Setzen Sie die Zeichencodierung ftp.setControlencoding ("utf-8"); // Konstruieren Sie die lokale Dateiobjektdatei localFile = neue Datei (LocalPath + "/" + Dateiname); // Alle Dateinamen in der Datei -Operation Directory String [] remotEnames = ftp.listnames () abrufen; // den Dateinamen schleifen, um zu bestimmen, ob er den Dateinamen enthält, der für (String RemoteName: remotEname) {if (Dateiname.Eequals (remotEname)) {result = true; }} // Wenn der Dateinamenvergleich erfolgreich ist, geben Sie den Download -Prozess ein, wenn (Ergebnis) {// den Dateiausgabe Stream OS = New FileOutputStream (localFile) konstruieren; // laden Sie die Datei result = ftp.retrieveFile (Dateiname, OS) herunter; // den Ausgabestream os.close () schließen; } // Melden Sie den Server ftp.logout () an; } catch (ioException e) {e.printstacktrace (); } endlich {try {// Bestimmen Sie, ob der Ausgabestrom existiert, wenn (null! } // Bestimmen Sie, ob die Verbindung besteht, wenn (ftp.isconnected ()) {// die Verbindung ftp.disconnect () abnehmen; }} catch (ioException e) {e.printstacktrace (); }} Rückgabeergebnis; }/*** Datei aus dem FTP -Server löschen** @param URL* Server -IP -Adresse* @param port* @param userername* Benutzeranmeldung Name* @param Passwort* Benutzeranmeldungskennwort* @param remotepath* Serverdateispeicher* @param Dateiname* Serverdatei -Name* @return* <b> true </b>: Deletion: Deletion war erfolgreich. fehlgeschlagen*/ public static boolean deleteFile (String -URL, int Port, String -Benutzername, String -Kennwort, String remotepath, String -Dateiname) {boolean result = false; Ftpclient ftp = new ftpclient (); Versuchen Sie es {// Wenn Sie eine Verbindung zum Server herstellen, können Sie mit 21 standardmäßig FTP.Connect (URL, Port) anschließen. // Melden Sie sich beim Server ftp.login (Benutzername, Passwort) an; // Bestimmen Sie, ob der Rückgabecode legal ist, wenn (! Ftpreply.ispositiveCompletion (ftp.getreplycode ())) {// Die Verbindung trennen, wenn er nicht legal ftp.disconnect () ist; // das Programmrückgabeergebnis beenden; } // Setzen Sie das Dateioperationsverzeichnis ftp.changeworkingDirectory (remotepath); // Setzen Sie den Dateityp, binary ftp.setfiletype (ftpclient.berary_file_type); // Setzen Sie die Puffergröße ftp.setbufferSize (3072); // Setzen Sie die Zeichencodierung ftp.setControlencoding ("utf-8"); // Alle Dateinamen in der Datei -Operation Directory String [] remotEnames = ftp.listnames () abrufen; // Schleife zum Vergleichen der Dateinamen, um festzustellen, ob der Dateiname für den heruntergeladenen Dateinamen derzeit für (String remotEname: remotEname) {if (fileName.equals (remotEname)) {result = true; }} // Wenn der Dateinamenvergleich erfolgreich ist, geben Sie den Löschvorgang ein, wenn (Ergebnis) {// Datei result = ftp.deleteFile (Dateiname) löschen; } // Melden Sie sich vom Server an ftp.logout () ab; } catch (ioException e) {e.printstacktrace (); } endlich {try {// Bestimmen Sie, ob die Verbindung existiert, wenn (ftp.isconnected ()) {// Die Verbindung ftp.disconnect (); }} catch (ioException e) {e.printstacktrace (); }} Rückgabeergebnis; } public static void main (String [] args) löscht FilenotFoundException aus {// try {// FileInputStream fis = new FileInputStream (neue Datei ("d:/Soft Storage/Soft Toolbox/html_help_workshop_1.3_xiazaiba.zip")); // system.out.println (storeFile ("192.168.1.2", 21, "admin", "1", "c:/dokumente und Einstellungen/Administrator/Desktop", randomuuid.random () + ".zip", fis)); //} catch (FilenotFoundException e) {// e.printstacktrace (); //} // // File = neue Datei ("c: /Users/freed/desktop/1.txt"); // InputStream ist = new FileInputStream (Datei); //System.out.println(storefile("127.0.1 ", 21," Feili "," Feili "," Beispiele "," 2.txt ", IS)); //System.out.println(retrieveFile("127.0.1 ", 21," Feili "," Feili "," Beispiele/jsp "," index.html "," c:/user/freed/desktop "); //System.out.println(deletefile("127.0.0.1 ", 21," Feili "," Feili "," TestPath "," 1.txt "); }}Es ist zu beachten, dass Sie beim Hochladen von Dateien die Dateidatei zuerst in den FileInputStream einfügen müssen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.