前几天写过一编"关于java的http协议文件上传实用例题"的文章;今天还想写编关于java用ftp上传文件的内容。我来说说2者的优缺点; 1:用http协议上传更适合web编程的方便;传小于1M文件速度要比用ftp协议上传文件略快。安全性好;不像ftp那样;必须要启动一个ftp服务才行。
2:用ftp协议上传文件大于1M的文件速度比http快;文件越大;上传的速度就比http上传快的倍数越大。而且用java编写程序;ftp比http方便。好,废话少说;我们先搭建一个实例来理性认识一下用java编写ftp上传文件的技术。 首先在本机启动一个ftp服务,ftp的用户:"IUSR_ZJH" 密码:"123";随后在ftp主目录下建一个名为upftp的子目录;下面有4个文件就可启动这个例题了。 文件1:MainCtrl.java(servlet文件)内容如下: import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.FileInputStream; import java.io.IOException; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; public class MainCtrl extends HttpServlet {
private FtpClient ftpClient;
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8"); try { //连接ftp服务器 connectServer("127.0.0.1", "IUSR_ZJH", "123", "upftp"); //上传文件;并返回上传文件的信息 req.setAttribute("inf", upload(req.getParameter("file_name"))); } catch (Exception e) { System.out.println(e.toString()); req.setAttribute("inf", e.toString()); req.getRequestDispatcher("view_inf.jsp").forward(req, resp); return; } finally { if (ftpClient != null) { ftpClient.closeServer(); } } req.getRequestDispatcher("view_inf.jsp").forward(req, resp); }
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } //连接ftp服务器 private void connectServer(String server, String user, String password, String path) throws IOException { // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 ftpClient = new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); //path是ftp服务下主目录的子目录 if (path.length() != 0) ftpClient.cd(path); //用2进制上传 ftpClient.binary(); } //上传文件;并返回上传文件的信息 private String upload(String filename) throws Exception { TelnetOutputStream os = null; FileInputStream is = null; try { //"upftpfile"用ftp上传后的新文件名 os = ftpClient.put("upftpfile"); java.io.File file_in = new java.io.File(filename); if (file_in.length()==0) { return "上传文件为空!"; } is = new FileInputStream(file_in); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return "上传文件成功!"; } } 文件2:upftp.htm(前台操作页面)内容如下: <html><body> <form method="post" action="/upftp/MainCtrl"> <!-- C:\\Downloads\\setup_kubao.exe客户端真实文件路径 --> <input type="text" name="file_name" size="38" value="C:\\Downloads\\setup_kubao.exe" /> <input type="submit" /> </form></body> </html></body></html></HTML> |
相关推荐
一款由java实现ftp自动上传整个磁盘所有文件,包括目录,下面的JTextArea读取Log4j及命令行的信息,采用第三方ftpClient.不过下载的部分还没有时间去做.
用JAVA实现Ftp文件上传下载,提供实现方法和测试用例
Java实现FTP文件上传和下载
java实现的ftp文件上传
JAVA实现FTP协议文件上传
java实现ftp上传jar包,里边包括edtftpj.jar、commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar
PutButton部分为向FTP服务器上传一个文件。 别忘了在程序中还要引入两个库文件(import sun.net.*,import sun.net.ftp.*)。 以下是这三部分的JAVA源程序: (1)显示FTP服务器上的文件 void ftpList_actionPerformed...
Java,FTP,用Java实现FTP批量大文件上传下载
本人在借鉴其他网友的基础上自己编写的一个java实现ftp文件上传下载的工程,非常方便,下载解压后直接使用,请根据自己的ftp设置做适当的修改。
java实现文件上传到fpt,里面一些很简单的操作适合初学者。
JAVA获取FTP文件列表,功能齐全。包括:链接到服务器,上传文件到FTP服务器,从FTP服务器上下载文件并返回下载文件长度,返回FTP目录下的文件列表,删除FTP上的文件及目录,关闭链接。
java实现FTP服务器,java实现FTP服务器
Java实现FTP批量大文件上传下载.pdf
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc
这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...
Java实现ftp文件传输,包含客户端和服务端,通过socket连接
Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件