初次接触FTPclient
来源:互联网 发布:python list生成字典 编辑:程序博客网 时间:2024/05/18 01:50
参与了一个基于Spring MVC框架的网站开发,其他带过,其中有个模块涉及到文件的上传功能,使用了js 的uploadfiy插件,上传时还会有百分比的进度条,后台使用FileOutputStream的write方法,在此碰到了个问题,上传文件大小总有限制,最开始仅能上传100M以下的文件。
网上搜索出很多建议:改spring的配置文件
<property name="maxUploadSize"><value>999999999999</value></property>
改uploadfiy的参数sizeLimit (上传文件的大小限制)。
这两个都更改了后,效果还是不大,有时候是上传的进度条到百分之几时就会中断,然后报IO error错误,有时候是进度条跑完后,后台程序报异常。
还有建议是改网站服务器的配置,改tomcat配置。(不知道有用没)
感觉上传的controller应该要换一种方式试试,于是看到了FTPCLient,貌似这个上传文件比HTTP协议稳定,而且还支持断点续传(不会用),都不知怎么开始用,感觉莫名其妙,于是各种找demo,终于找到一个能用的:
<span style="white-space:pre"></span>FTPClient ftpClient = new FTPClient(); FileInputStream fis = null; try { ftpClient.connect("192.168.14.117"); ftpClient.login("admin", "123"); File srcFile = new File("C:\\new.gif"); fis = new FileInputStream(srcFile); //设置上传目录 ftpClient.changeWorkingDirectory("/admin/pic"); ftpClient.setBufferSize(1024); ftpClient.setControlEncoding("GBK"); //设置文件类型(二进制) ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile("3.gif", fis); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("FTP客户端出错!", e); } finally { IOUtils.closeQuietly(fis); try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("关闭FTP连接发生异常!", e); } }(代码来源于网络)
当ftpClient.storeFile 方法返回ture时,就说明上传成功了,此时注意要添加jar包,我用的是commons-net-3.3.jar,项目导入此包后,还要将这个包复制一份到tomcat的lib目录下,否则会找不到这个类,做完这个后,却还是返回了false,又在网上看到
调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。
于是我加入了这个方法,果然就ok了,改动之后,上传的文件大小能到四五百兆。
总结:方法是找到了,但是还是知其然不知其所以然,惭愧啊,都不知道原因到底在哪,唉,再一个就是,如果上传再大些的文件,uploadfiy的进度条到不了5%就断掉了,然后还是报IO error,觉得还是这个js插件没弄好。第一次写哈,请多包涵嘿嘿,记录下这个过程以便复习,这其中还有好多没弄明白的缘由,希望大神们多多赐教。
- 初次接触FTPclient
- 初次接触
- 初次接触
- 初次接触
- 初次接触EJB
- 初次接触MFC
- 《英雄无敌 V》初次接触!
- 初次接触linux 总结:
- 初次接触power architecture
- 初次接触Hibernate
- 初次接触Hibernate
- 初次接触GDIplus
- 初次接触ASP.NET
- 初次接触asp.net
- WAP初次接触
- 初次接触XSL
- 初次接触Oracle
- 初次接触resin引擎
- B - 畅通工程
- tcp和udp的区别
- 沉淀下来才是收获
- Face Detection and Tracking Using the KLT Algorithm
- hadoop集群中的日志文件
- 初次接触FTPclient
- c- Ubiquitous Religions
- 移动共享开发(二)各平台SSO(免登录)配置 微信和微信朋友圈、QQ、QQ空间、新浪微博、腾讯微博、人人
- POJ -- 2387 Til the Cows Come Home
- c#格式化说明总结
- org.apache.jasper.JasperException: /index.jsp (line: 24, column: 26) attribute for %>" is not proper
- bootstrap入门【按钮和图片】
- Scala类型 11: Upper Bounds & Lower Bounds
- how to update facebook share link, titile, description