Java文件上传管理器 控制台

上传文件下载管理器项目技术

JDBC + IO + Socket

实现功能

客户端注册:通过输入用户名,密码,确认密码并且校验完成以后将用户信息储存在数据库中。

客户端登录:通过输入用户名和密码到数据库中校验,校验完成进入文件上传下载管理器。

上传文件:通过输入上传文件的路径上传到数据库,支持多个文件上传。

查看文件:通过登录的用户名查找上传的文件。

下载文件:通过输入文件的编号和下载的路径,从数据库进行下载。

删除文件:通过输入文件的编号进行单个文件的删除。

(PS:这次花了一天才写完,不过收获也很多,不足之处,多多交流)

完整代码

undefined

User.java

包com.xk; import java.io.Serializable; @SuppressWarnings(“serial”) public class User implements Serializable { private String username; 私人字符串密码; public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } }

未定义

FileEntity.java

包com.xk; import java.io.Serializable; @SuppressWarnings(“serial”) public class FileEntity implements Serializable { private String username; 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(){ return id; } public void setId(int id){ this.id = id; } public String getUsername(){ return username; } 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; } @Override public String toString(){ return id +“\ t”+ fileName; } }

未定义

CommandRelay.java

包com.xk; import java.io.Serializable; import java.util.ArrayList; @SuppressWarnings(“serial”) public class CommandRelay实现Serializable { private String command; 私有布尔标志 private Object userObject = null; private Object fileObject = null; private byte [] bytes = null; private ArrayList fileList = null; public String getCommand(){ return command; } public void setCommand(String command){ this.command = command; } public Object getUserObject(){ return 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(){ return flag; } public void setFlag(boolean flag){ this.flag = flag; } public ArrayList getFileList(){ return fileList; } public void setFileList(ArrayList fileList){ this.fileList = fileList; } public byte [] getBytes(){ return bytes; } 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; public class 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”; / * *数据库连接 * / public连接getConnection(){ try { Class.forName(DRIVER); Connection conn = DriverManager.getConnection(URL,NAME,PASSWORD); 返回conn } catch(ClassNotFoundException e){ e.printStackTrace(); 返回null; } catch(SQLException e){ e.printStackTrace(); 返回null; } } / * *数据库关闭 * / public void close(Connection conn,PreparedStatement ps,ResultSet rs){ try { 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; public class 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(); if(rs.next()){ return true; } else { return false; } } / * *用户注册 * / 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(); 返回假 } return true; } / * *上传文件 * / 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(); 返回假 } return true; } / * *下载文件 * / 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; if(rs.next()){ is = rs.getBinaryStream(1); ByteArrayOutputStream(); byte [] buffer = new byte [is.available()]; int len while((len = is.read(buffer))!= -1){ baos.write(buffer,0,len); } return buffer; } return 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(); while(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){ return true; } return false; } }

未定义

Server.java

未定义

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(){ try { 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吧媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

使用JDBC向Kudu表插入中文字符-cast的秘密

使用Impala JDBC向Kudu表中插入中文字符,插入的中文字符串乱码,中文字符串被截断。

652120
来自专栏Jerry的SAP技术分享

使用Excel调用ABAP系统的函数

效果:在excel里创建一个按钮,开发一些VB script,可以连接指定的ABAP系统并执行系统里的ABAP function module。

36770
来自专栏ImportSource

初体验Spring Boot 2支持的HikariCP连接池

Hikari,没错,听着就不像英文,是一句日语,最初是由一个居住在日本的老外开发的一款数据库连接池。 (这单词怎么读呢?hi·ka·'lē。注意最后的ri读成l...

70380
来自专栏nice_每一天

Java 实现视频下载功能

1.4K20
来自专栏闻道于事

商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

UEditor富文本编辑器:http://ueditor.baidu.com/website/ 相应页面展示: 商品添加: ? 商品修改: ? 前台商品展示...

72940
来自专栏xingoo, 一个梦想做发明家的程序员

【Spring实战】—— 14 传统的JDBC实现的DAO插入和读取

从这篇开始学习Spring的JDBC,为了了解Spring对于JDBC的作用,先通过JDBC传统的流程,实现一个数据库的插入和读取。 从这篇你可以了解到:...

23080
来自专栏码匠的流水账

聊聊hikari连接池的validationTimeout

HikariCP-2.7.6-sources.jar!/com/zaxxer/hikari/pool/HikariPool.java

44010
来自专栏企鹅号快讯

Java数据库编程中的技巧

Java数据库编程中的技巧,Java数据库编程中的技巧 1、java数据库操作基本流程 ? 2、几个常用的重要技巧: 可滚动、更新的记录集 批量更新 事务处理 ...

20950
来自专栏听雨堂

如何清除应用程序承载 WebBrowser 控件时缓存

http://support.microsoft.com/kb/262110/zh-cn 察看本文应用于的产品 注意:这篇文章是由无人工介入的自动的机器翻译系统...

20970
来自专栏闻道于事

JavaWeb(四)JDBC操作Oracle

JDBC:Java DataBase Connectivity(java数据库连接) SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范...

51240

扫码关注云+社区

领取腾讯云代金券