From 4010f687ba554bfa8f8eded033eb1bc370cb090c Mon Sep 17 00:00:00 2001 From: Mateusz Kowalczyk Date: Fri, 3 Jan 2020 22:39:34 +0100 Subject: [PATCH] Add sending file --- src/main/java/ftp/sar/FileChooser.java | 9 ++++++++ .../sar/controller/ServerPanelController.java | 13 +++++++++++ .../java/ftp/sar/server/ServerConnector.java | 22 +++++++++++++++++++ src/main/resources/server_panel.fxml | 3 ++- 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/main/java/ftp/sar/FileChooser.java b/src/main/java/ftp/sar/FileChooser.java index dbaaea6..f69c865 100644 --- a/src/main/java/ftp/sar/FileChooser.java +++ b/src/main/java/ftp/sar/FileChooser.java @@ -1,6 +1,7 @@ package ftp.sar; import javax.swing.*; +import java.io.File; public class FileChooser { @@ -14,4 +15,12 @@ public class FileChooser { return fileChooser.getSelectedFile().toString(); } + public File getFile() { + JFileChooser fileChooser = new JFileChooser(); + fileChooser.setDialogTitle("Choose file to send"); + fileChooser.showSaveDialog(null); + + return fileChooser.getSelectedFile(); + } + } diff --git a/src/main/java/ftp/sar/controller/ServerPanelController.java b/src/main/java/ftp/sar/controller/ServerPanelController.java index f8c3626..2e0dcae 100644 --- a/src/main/java/ftp/sar/controller/ServerPanelController.java +++ b/src/main/java/ftp/sar/controller/ServerPanelController.java @@ -13,6 +13,7 @@ import javafx.scene.input.MouseEvent; import javafx.scene.layout.FlowPane; import javafx.scene.layout.Pane; +import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.ResourceBundle; @@ -21,6 +22,7 @@ public class ServerPanelController implements Initializable { private Server server; private FilePaneBuilder filePaneBuilder = new FilePaneBuilder(); private MainPageController mainPageController; + private FileChooser fileChooser = new FileChooser(); @FXML Pane serverPane; @@ -49,6 +51,17 @@ public class ServerPanelController implements Initializable { this.mainPageController.serverContainer.getChildren().remove(this.serverPane); } + @FXML + public void uploadFile(Event e) { + File file = this.fileChooser.getFile(); + + try { + this.server.getConnector().sendFile(file); + } finally { + this.refreshList(e); + } + } + public void setData(Server server, MainPageController mainPageController) { this.mainPageController = mainPageController; this.server = server; diff --git a/src/main/java/ftp/sar/server/ServerConnector.java b/src/main/java/ftp/sar/server/ServerConnector.java index a4983a0..e655a2b 100644 --- a/src/main/java/ftp/sar/server/ServerConnector.java +++ b/src/main/java/ftp/sar/server/ServerConnector.java @@ -124,4 +124,26 @@ public class ServerConnector { } } + + public void sendFile(File file) { + try { + this.sendRequest("SEND_" + file.getName()); + this.sendRequest(String.valueOf(file.length())); + + byte[] fileBytes = new byte[(int) file.length()]; + BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)); + bufferedInputStream.read(fileBytes, 0, fileBytes.length); + + OutputStream outputStream = this.server.getSocket().getOutputStream(); + outputStream.write(fileBytes, 0, fileBytes.length); + outputStream.flush(); + + } catch (CannotConnectException e) { + e.printStackTrace(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/resources/server_panel.fxml b/src/main/resources/server_panel.fxml index 912f09e..b3e61af 100644 --- a/src/main/resources/server_panel.fxml +++ b/src/main/resources/server_panel.fxml @@ -5,7 +5,7 @@ - +