當前位置:
首頁 > 知識 > Java的文件上傳管理器 控制台

Java的文件上傳管理器 控制台

文件上傳下載管理器項目技術

JDBC + IO +套接字

實現功能

客戶端註冊:通過輸入用戶名,密碼,確認密碼並且校驗完成以後將用戶信息儲存在資料庫中。

客戶端登錄:通過輸入用戶名和密碼到資料庫中校驗,校驗完成進入文件上傳下載管理器。

上傳文件:通過輸入上傳文件的路徑上傳到資料庫,支持多個文件上傳。

查看文件:通過登錄的用戶名查找上傳的文件。

下載文件:通過輸入文件的編號和下載的路徑,從資料庫進行下載。

刪除文件:通過輸入文件的編號進行單個文件的刪除。

(PS:這次花了一天才寫完,不過收穫也很多,不足之處,多多交流)

完整代碼

User.java

包com.xk; import java.io.Serializable; @SuppressWarnings(「串列」)public class User implements Serializable { 私人字元串用戶名; 私人字元串密碼; public String getUsername(){ 返回用戶名 } public void setUsername(String username){ this.username = username; } public String getPassword(){ 返回密碼; } public void setPassword(String password){ this.password = password; } }

未定義

FileEntity.java

包com.xk; import java.io.Serializable; @SuppressWarnings(「串列」)public class FileEntity implements Serializable { 私人字元串用戶名; private String fileName; 私有int id private byte [] fileContent; public FileEntity(int id,String fileName){ this.id = id; this.fileName = fileName; } public FileEntity(){ } public int getId(){ 返回id } public void setId(int id){ this.id = id; } public String getUsername(){ 返回用戶名 } public void setUsername(String username){ this.username = username; } public String getFileName(){ return fileName; } public void setFileName(String fileName){ this.fileName = fileName; } public byte [] getFileContent(){ return fileContent; } public void setFileContent(byte [] fileContent){ this.fileContent = fileContent; } @覆蓋 public String toString(){ return id +「 t」+ fileName; } }

未定義

CommandRelay.java

包com.xk; import java.io.Serializable; import java.util.ArrayList; @SuppressWarnings(「串列」)public class CommandRelay實現Serializable { private String命令; 私有布爾標誌 private Object userObject = null; private Object fileObject = null; private byte [] bytes = null; private ArrayList fileList = null; public String getCommand(){ 返回命令; } public void setCommand(String command){ this.command =命令; } public Object getUserObject(){ 返回userObject; } public void setUserObject(Object userObject){ this.userObject = userObject; } public Object getFileObject(){ return fileObject; } public void setFileObject(Object fileObject){ this.fileObject = fileObject; } public boolean isFlag(){ 返回標誌 } public void setFlag(boolean flag){ this.flag = flag; } public ArrayList getFileList(){ return fileList; } public void setFileList(ArrayList fileList){ this.fileList = fileList; } public byte [] getBytes(){ 返回位元組; } public void setBytes(byte [] bytes){ this.bytes = bytes; } }

未定義

DBUtil.java

包com.xk; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; 公共類DBUtil { private static final String DRIVER =「com.mysql.jdbc.Driver」; private static final String URL =「jdbc:mysql:// localhost:3306 / FileUpload」; private static final String NAME =「root」; private static final String PASSWORD =「root」; / * *資料庫連接 * / 公共連接的getConnection(){ 嘗試{ 的Class.forName(DRIVER); Connection conn = DriverManager.getConnection(URL,NAME,PASSWORD); 返回康涅狄格州 } catch(ClassNotFoundException e){ e.printStackTrace(); 返回NULL; } catch(SQLException e){ e.printStackTrace(); 返回NULL; } } / * *資料庫關閉 * / public void close(Connection conn,PreparedStatement ps,ResultSet rs){ 嘗試{ if(rs!= null){ rs.close(); } if(ps!= null){ ps.close(); } if(conn!= null){ conn.close(); } } catch(SQLException e){ e.printStackTrace(); } } }

未定義

DBTools.java

包com.xk; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; 公共類DBTools { DBUtil dbu = new DBUtil(); 連接con = dbu.getConnection(); / * *用戶登錄 * / public boolean login(User user)throws Exception { String sql =「select * from users where username =?and password =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); ResultSet rs = ps.executeQuery(); 如果(rs.next()){ 返回真 } else { 返回假 } } / * *用戶註冊 * / public boolean register(User user){ String sql =「insert into users(username,password)value(?,?)」; 嘗試{ PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,user.getUsername()); ps.setString(2,user.getPassword()); ps.executeUpdate(); } catch(SQLException e){ e.printStackTrace(); 返回假 } 返回真 } / * *上傳文件 * / public boolean uploadFile(FileEntity fe){ String sql =「insert into file(username,filename,filecontent)VALUES(?,?,?)」; 嘗試{ PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,fe.getUsername()); ps.setString(2,fe.getFileName()); ps.setBytes(3,fe.getFileContent()); ps.executeUpdate(); } catch(SQLException e){ e.printStackTrace(); 返回假 } 返回真 } / * *下載文件 * / public byte [] downloadFile(FileEntity fe)throws Exception { String sql =「從文件中選擇filecontent id =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1,fe.getId()); ResultSet rs = ps.executeQuery(); InputStream is = null; 如果(rs.next()){ is = rs.getBinaryStream(1); ByteArrayOutputStream(); byte [] buffer = new byte [is.available()]; int len while((len = is.read(buffer))!= -1){ baos.write(緩衝液,0,LEN); } 返回緩衝區 } 返回null; } / * *查看文件 * / public ArrayList viewFile(FileEntity fe)throws Exception { ArrayList fileList = new ArrayList (); String sql =「select id,filename from file where username =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,fe.getUsername()); ResultSet rs = ps.executeQuery(); 而(rs.next()){ fileList.add(new FileEntity(rs.getInt(1),rs.getString(2))); } return fileList; } / * *刪除文件 * / public boolean deleteFile(FileEntity fe)throws Exception { String sql =「從文件中刪除id =?」; PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1,fe.getId()); ps.execute(); if(ps.getUpdateCount()> 0){ 返回真 } 返回假 } }

未定義

Server.java

包com.xk; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String [] args)throws Exception { @SuppressWarnings(「資源」) ServerSocket ss = new ServerSocket(8722); Socket socket = null; 的System.out.println(「伺服器已經啟動!」); 而(真){ socket = ss.accept(); ServerThread st = new ServerThread(socket); st.start(); } } }

未定義

ServerThread.java

包com.xk; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.ArrayList; public class ServerThread extends Thread { Socket socket = null; public ServerThread(Socket socket){ this.socket = socket; } public void run(){ 嘗試{ ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); CommandRelay cr =(CommandRelay)ois.readObject(); 嘗試{ cr = inquire(cr); oos.writeObject(CR); } catch(Exception e){ e.printStackTrace(); } } catch(ClassNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } }

運行效果


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java學習吧 的精彩文章:

Java初學者基礎問題及答案匯總
Java-網路編程
關於JDBC的連接深入了解
掃碼登錄的安全性分析

TAG:java學習吧 |

您可能感興趣

Cloud Commander:一個有控制台和編輯器的 Web 文件管理器
with與上下文管理器
微軟開源 Windows 文件管理器
CPU 電源管理器:Linux 系統中 CPU 主頻的控制和管理
傳微軟正在開發全新文件管理器 採用Fluent Design技術
Android Q新版文件管理器採用全新設計
SmsManager(簡訊管理器)
django之管理器
思科視頻監控管理器(VSM)被秘密植入硬編碼root後門
AudioManager(音頻管理器)
谷歌測試最新功能:Chrome OS文件管理器更桌面化
微軟計劃改進Windows 10文件資源管理器的搜索體驗
Vim-plug:極簡 Vim 插件管理器
使用 Arch Linux 鏡像列表管理器來管理你的鏡像
用Python編寫一個本地論文管理器
重煥生機,微軟開源 Windows 文件管理器
HPE為其OneSphere混合雲管理器添加容器服務
密碼管理器LastPass更新:新增對Android Oreo自動填充特性的支持
Win7與Win8文件管理器對比Win8文件管理強在哪?
AutoLine源碼分析之調度管理器