前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

前几天 有个需求就是上传文件的时候,本地存一份,其他服务器也保存一份,于是就研究了一下,功能只实现了上传文件不能上传文件夹,

这里主要用到了 ftp服务器软件 网上有很多我用的是 serv-u,操作比较简单很容易像我这样的小菜使用

服务器下载地址

点击打开链接           绝对安全无病毒

实现类代码

[java] view plain copy
  1. <pre code_snippet_id="244843" snippet_file_name="blog_20140319_4_6086968" name="code" class="java">package com.core.haction;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5. import java.io.PrintWriter;
  6. import org.apache.commons.net.ftp.FTPClient;
  7. import org.apache.commons.net.ftp.FTPReply;
  8. import com.core.action.BaseAction;
  9. public class ShangChuanFtp extends BaseAction<Model> {
  10. public ShangChuanFtp() {
  11. super(Model.class);
  12. // TODO Auto-generated constructor stub
  13. }
  14. /**
  15. *
  16. */
  17. private static final long serialVersionUID = 1L;
  18. private FTPClient ftp;
  19. /**
  20. *
  21. * @param path
  22. *            上传到ftp服务器哪个路径下
  23. * @param addr
  24. *            地址
  25. * @param port
  26. *            端口号
  27. * @param username
  28. *            用户名
  29. * @param password
  30. *            密码
  31. * @return
  32. * @throws Exception
  33. */
  34. private boolean connect(String path, String addr, int port,
  35. String username, String password) throws Exception {
  36. boolean result = false;
  37. ftp = new FTPClient();
  38. int reply;
  39. ftp.connect(addr, port);//连接ftp服务器
  40. ftp.login(username, password);//登录ftp
  41. ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
  42. reply = ftp.getReplyCode();
  43. if (!FTPReply.isPositiveCompletion(reply)) {
  44. ftp.disconnect();
  45. return result;
  46. }
  47. ftp.changeWorkingDirectory(path);
  48. result = true;
  49. return result;
  50. }
  51. /**
  52. *
  53. * @param file
  54. *            上传的文件或文件夹
  55. *
  56. *            代码我是从网上找的,在使用过程中出现了,中文文件名称不能上传,后来自己改变了一下编码
  57. * @throws Exception
  58. */
  59. private void upload(File file) throws Exception {
  60. if (file.isDirectory()) {
  61. // System.out.println(file.isDirectory()+"\n"+file.getName());
  62. ftp.makeDirectory(new String(file.getName().getBytes("utf-8"),"8859_1"));//给文件名转换编码
  63. //System.out.println(file.getName());
  64. ftp.changeWorkingDirectory(new String(file.getName().getBytes("utf-8"),"8859_1"));
  65. String[] files = file.list();
  66. for (int i = 0; i < files.length; i++) {
  67. File file1 = new File(file.getPath() + "\\" + files[i]);
  68. if (file1.isDirectory()) {
  69. upload(file1);
  70. ftp.changeToParentDirectory();
  71. else {
  72. File file2 = new File(file.getPath() + "\\" + files[i]);
  73. FileInputStream input = new FileInputStream(file2);
  74. ftp.storeFile(new String(file2.getName().getBytes("utf-8"),"8859_1"), input);
  75. input.close();
  76. }
  77. }
  78. else {
  79. File file2 = new File(file.getPath());
  80. System.out.println(file2.getName());
  81. FileInputStream input = new FileInputStream(file2);
  82. ftp.storeFile(new String(file2.getName().getBytes("utf-8"),"8859_1"), input);
  83. input.close();
  84. }
  85. }
  86. // public static void main(String[] args) throws Exception{//本地测试方法
  87. // ShangChuanFtp t = new ShangChuanFtp();
  88. // t.connect("", "远程服务器的Ip地址", 21, "ftp的登录名", "ftp的登录密码");
  89. // File file = new File("d:\\webapps");//要上传的文件地址
  90. // t.upload(file);
  91. // System.out.println("上传完成");
  92. // }
  93. /**
  94. *
  95. * @param file
  96. *          以下代码,住web页面用的,strut2的语法大家应该都会知道
  97. * @throws IOException
  98. */
  99. private File pphoto;
  100. private String pphotoFileName;
  101. private String pphotoFileContentType;
  102. private static final String filePath = "/while/photo";//上传文件到本地服务器的路径
  103. private String textfield;
  104. public String scftp() throws IOException {
  105. PrintWriter out = getResponse().getWriter();
  106. try {
  107. String fileUrl = null;
  108. if (pphoto != null) {
  109. //自己封装的上传本地服务器的方法fileUrl是方法的返回值我这里是返回的文件名称
  110. fileUrl = this.saveFile(pphoto, pphotoFileName, filePath,false);
  111. System.out.println("3:" + this.getSession().getAttribute("dir"));
  112. //t.connect("", "远程服务器的Ip地址", 21, "ftp的登录名", "ftp的登录密码");21是端口号
  113. connect("", "000.000.000.000", 21, "", "");
  114. //this.getSession().getAttribute("dir")这个是获取的上传到本地服务器的路径,用了个懒办法,在上传方法我存到session里面,这边获取的
  115. //fileUrl是你上传的那个文件名
  116. File file = new File(this.getSession().getAttribute("dir")+"/"+fileUrl);
  117. upload(file);
  118. else {
  119. out.print("0");
  120. }
  121. catch (Exception e) {
  122. // TODO Auto-generated catch block${ctx }/json/scftp.action
  123. System.out.println(e.getMessage());
  124. }
  125. out.print("1");
  126. return null;
  127. }
  128. public String getTextfield() {
  129. return textfield;
  130. }
  131. public void setTextfield(String textfield) {
  132. this.textfield = textfield;
  133. }
  134. public File getPphoto() {
  135. return pphoto;
  136. }
  137. public void setPphoto(File pphoto) {
  138. this.pphoto = pphoto;
  139. }
  140. public String getPphotoFileName() {
  141. return pphotoFileName;
  142. }
  143. public void setPphotoFileName(String pphotoFileName) {
  144. this.pphotoFileName = pphotoFileName;
  145. }
  146. public String getPphotoFileContentType() {
  147. return pphotoFileContentType;
  148. }
  149. public void setPphotoFileContentType(String pphotoFileContentType) {
  150. this.pphotoFileContentType = pphotoFileContentType;
  151. }
  152. }

java中ftp文件上传和中文乱码解决相关推荐

  1. java语言 文件上传,java中实现文件上传的方法

    java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...

  2. Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)

    相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...

  3. java中excel文件上传

    java文件上传 excel文件上传的两种方式 1.使用ExcelsUtils上传文件 2.把文件转换成流上传(支持多sheet) 代码实现 第一种方式 ExcelsUtils.ReadMultipa ...

  4. java ftp上传失败_使用java进行ftp文件上传出现425错误

    /** * 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @p ...

  5. struts文件上传以及中文乱码问题

    Struts上传实现很简单,不需要自己用什么common_fileupload包,struts中用一个FormFile的接口用到了common_fileupload包的东西.在StrutsForm中只 ...

  6. java中ftp删除文件,Java 实现ftp 文件上传、下载和删除

    实现FTP相关功能 1.下载相应的jar包 commons-net-3.6.jar 2.代码实现 import java.io.File; import java.io.FileInputStream ...

  7. java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题

    废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...

  8. java上传ftp_java实现FTP文件上传与文件下载

    本文实例为大家分享了两种java实现FTP文件上传下载的方式,供大家参考,具体内容如下 第一种方式: package com.cloudpower.util; import java.io.File; ...

  9. Win10搭建FTP服务器+java代码实现文件上传至FTP服务器

    Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...

最新文章

  1. SQLite FTS5使用小技巧
  2. h5的fetch方法_你不需要jQuery(三):新AJAX方法fetch()
  3. c语言输入整数要求输出字符,求C语言 将输入整数转换成字符串输出!
  4. android 自动化 录制,android 自动化录制回放测试工具
  5. 小汤学编程之JavaScript学习day05——DOM、事件
  6. 解决CentOS6.5下MySQL5.6无法远程连接的问题
  7. vmware开机自动进入BIOS vmware 进入BIOS方法
  8. andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
  9. AARRR:数据运营模型
  10. CentOS6.x安装zabbix
  11. linux执行.sql文件,Linux下执行Oracle的sql脚本
  12. 天煌计算机组成原理控制软件,天煌THTJZ-2型计算机组成原理课程设计.doc
  13. Gradle下载失败的解决办法
  14. 三维重建笔记——Linux环境下openMVG的安装
  15. 深入理解计算机系统bomb实验
  16. 科学计算IED--Anaconda软件基础操作
  17. 烟花绽放c语言程序设计摘要,描写烟花绽放的优美句子
  18. 【LC中等】1321. 餐馆营业额变化增长
  19. 身边的礼仪---整理版
  20. BCD码 —— 8421码,余3码,2421码

热门文章

  1. 饭卡可以用水冲洗吗_薄壁不锈钢水管真的可以满足大众用水健康管道的要求吗?...
  2. vue传值到后端_Vue.js快速入门就从这儿开始特别是后端程序员
  3. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
  4. php新手用7.2,总结PHP升级7.2之后需要注意的事情
  5. 【CodeForces - 1152C 】Neko does Maths(数学数论,lcm,gcd性质)
  6. 【CodeForces - 1150A】Stock Arbitraging (贪心,水题)
  7. 详解惯性导航论文 RINS-W: Robust Inertial Navigation System on Wheels
  8. ubuntu18.04下安装grafana6和简单使用
  9. java 监听本地端口_Java-在本地端口上侦听RTP数据包
  10. 计算机专业会议评级,2018计算机专业工程教育认证研讨会