java中ftp文件上传和中文乱码解决
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
前几天 有个需求就是上传文件的时候,本地存一份,其他服务器也保存一份,于是就研究了一下,功能只实现了上传文件不能上传文件夹,
这里主要用到了 ftp服务器软件 网上有很多我用的是 serv-u,操作比较简单很容易像我这样的小菜使用
服务器下载地址
点击打开链接 绝对安全无病毒
实现类代码
- <pre code_snippet_id="244843" snippet_file_name="blog_20140319_4_6086968" name="code" class="java">package com.core.haction;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.PrintWriter;
- import org.apache.commons.net.ftp.FTPClient;
- import org.apache.commons.net.ftp.FTPReply;
- import com.core.action.BaseAction;
- public class ShangChuanFtp extends BaseAction<Model> {
- public ShangChuanFtp() {
- super(Model.class);
- // TODO Auto-generated constructor stub
- }
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private FTPClient ftp;
- /**
- *
- * @param path
- * 上传到ftp服务器哪个路径下
- * @param addr
- * 地址
- * @param port
- * 端口号
- * @param username
- * 用户名
- * @param password
- * 密码
- * @return
- * @throws Exception
- */
- private boolean connect(String path, String addr, int port,
- String username, String password) throws Exception {
- boolean result = false;
- ftp = new FTPClient();
- int reply;
- ftp.connect(addr, port);//连接ftp服务器
- ftp.login(username, password);//登录ftp
- ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
- reply = ftp.getReplyCode();
- if (!FTPReply.isPositiveCompletion(reply)) {
- ftp.disconnect();
- return result;
- }
- ftp.changeWorkingDirectory(path);
- result = true;
- return result;
- }
- /**
- *
- * @param file
- * 上传的文件或文件夹
- *
- * 代码我是从网上找的,在使用过程中出现了,中文文件名称不能上传,后来自己改变了一下编码
- * @throws Exception
- */
- private void upload(File file) throws Exception {
- if (file.isDirectory()) {
- // System.out.println(file.isDirectory()+"\n"+file.getName());
- ftp.makeDirectory(new String(file.getName().getBytes("utf-8"),"8859_1"));//给文件名转换编码
- //System.out.println(file.getName());
- ftp.changeWorkingDirectory(new String(file.getName().getBytes("utf-8"),"8859_1"));
- String[] files = file.list();
- for (int i = 0; i < files.length; i++) {
- File file1 = new File(file.getPath() + "\\" + files[i]);
- if (file1.isDirectory()) {
- upload(file1);
- ftp.changeToParentDirectory();
- } else {
- File file2 = new File(file.getPath() + "\\" + files[i]);
- FileInputStream input = new FileInputStream(file2);
- ftp.storeFile(new String(file2.getName().getBytes("utf-8"),"8859_1"), input);
- input.close();
- }
- }
- } else {
- File file2 = new File(file.getPath());
- System.out.println(file2.getName());
- FileInputStream input = new FileInputStream(file2);
- ftp.storeFile(new String(file2.getName().getBytes("utf-8"),"8859_1"), input);
- input.close();
- }
- }
- // public static void main(String[] args) throws Exception{//本地测试方法
- // ShangChuanFtp t = new ShangChuanFtp();
- // t.connect("", "远程服务器的Ip地址", 21, "ftp的登录名", "ftp的登录密码");
- // File file = new File("d:\\webapps");//要上传的文件地址
- // t.upload(file);
- // System.out.println("上传完成");
- // }
- /**
- *
- * @param file
- * 以下代码,住web页面用的,strut2的语法大家应该都会知道
- * @throws IOException
- */
- private File pphoto;
- private String pphotoFileName;
- private String pphotoFileContentType;
- private static final String filePath = "/while/photo";//上传文件到本地服务器的路径
- private String textfield;
- public String scftp() throws IOException {
- PrintWriter out = getResponse().getWriter();
- try {
- String fileUrl = null;
- if (pphoto != null) {
- //自己封装的上传本地服务器的方法fileUrl是方法的返回值我这里是返回的文件名称
- fileUrl = this.saveFile(pphoto, pphotoFileName, filePath,false);
- System.out.println("3:" + this.getSession().getAttribute("dir"));
- //t.connect("", "远程服务器的Ip地址", 21, "ftp的登录名", "ftp的登录密码");21是端口号
- connect("", "000.000.000.000", 21, "", "");
- //this.getSession().getAttribute("dir")这个是获取的上传到本地服务器的路径,用了个懒办法,在上传方法我存到session里面,这边获取的
- //fileUrl是你上传的那个文件名
- File file = new File(this.getSession().getAttribute("dir")+"/"+fileUrl);
- upload(file);
- } else {
- out.print("0");
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block${ctx }/json/scftp.action
- System.out.println(e.getMessage());
- }
- out.print("1");
- return null;
- }
- public String getTextfield() {
- return textfield;
- }
- public void setTextfield(String textfield) {
- this.textfield = textfield;
- }
- public File getPphoto() {
- return pphoto;
- }
- public void setPphoto(File pphoto) {
- this.pphoto = pphoto;
- }
- public String getPphotoFileName() {
- return pphotoFileName;
- }
- public void setPphotoFileName(String pphotoFileName) {
- this.pphotoFileName = pphotoFileName;
- }
- public String getPphotoFileContentType() {
- return pphotoFileContentType;
- }
- public void setPphotoFileContentType(String pphotoFileContentType) {
- this.pphotoFileContentType = pphotoFileContentType;
- }
- }
java中ftp文件上传和中文乱码解决相关推荐
- java语言 文件上传,java中实现文件上传的方法
java中实现文件上传的方法 发布时间:2020-06-19 10:29:11 来源:亿速云 阅读:86 作者:Leah 这篇文章给大家分享的是java中实现文件上传的方法,相信大部分人都还没学会这个 ...
- Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)
相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...
- java中excel文件上传
java文件上传 excel文件上传的两种方式 1.使用ExcelsUtils上传文件 2.把文件转换成流上传(支持多sheet) 代码实现 第一种方式 ExcelsUtils.ReadMultipa ...
- java ftp上传失败_使用java进行ftp文件上传出现425错误
/** * 向FTP服务器上传文件 * @param host FTP服务器hostname * @param port FTP服务器端口 * @param username FTP登录账号 * @p ...
- struts文件上传以及中文乱码问题
Struts上传实现很简单,不需要自己用什么common_fileupload包,struts中用一个FormFile的接口用到了common_fileupload包的东西.在StrutsForm中只 ...
- java中ftp删除文件,Java 实现ftp 文件上传、下载和删除
实现FTP相关功能 1.下载相应的jar包 commons-net-3.6.jar 2.代码实现 import java.io.File; import java.io.FileInputStream ...
- java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...
- java上传ftp_java实现FTP文件上传与文件下载
本文实例为大家分享了两种java实现FTP文件上传下载的方式,供大家参考,具体内容如下 第一种方式: package com.cloudpower.util; import java.io.File; ...
- Win10搭建FTP服务器+java代码实现文件上传至FTP服务器
Win10搭建ftp服务器 打开控制面板 -> 程序和功能,点击启用或关闭Windows功能,勾选红色方框内的选项 控制面板 -> 管理工具,如下打开IIS管理器 先在本地磁盘中创建一个目 ...
最新文章
- SQLite FTS5使用小技巧
- h5的fetch方法_你不需要jQuery(三):新AJAX方法fetch()
- c语言输入整数要求输出字符,求C语言 将输入整数转换成字符串输出!
- android 自动化 录制,android 自动化录制回放测试工具
- 小汤学编程之JavaScript学习day05——DOM、事件
- 解决CentOS6.5下MySQL5.6无法远程连接的问题
- vmware开机自动进入BIOS vmware 进入BIOS方法
- andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
- AARRR:数据运营模型
- CentOS6.x安装zabbix
- linux执行.sql文件,Linux下执行Oracle的sql脚本
- 天煌计算机组成原理控制软件,天煌THTJZ-2型计算机组成原理课程设计.doc
- Gradle下载失败的解决办法
- 三维重建笔记——Linux环境下openMVG的安装
- 深入理解计算机系统bomb实验
- 科学计算IED--Anaconda软件基础操作
- 烟花绽放c语言程序设计摘要,描写烟花绽放的优美句子
- 【LC中等】1321. 餐馆营业额变化增长
- 身边的礼仪---整理版
- BCD码 —— 8421码,余3码,2421码
热门文章
- 饭卡可以用水冲洗吗_薄壁不锈钢水管真的可以满足大众用水健康管道的要求吗?...
- vue传值到后端_Vue.js快速入门就从这儿开始特别是后端程序员
- Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
- php新手用7.2,总结PHP升级7.2之后需要注意的事情
- 【CodeForces - 1152C 】Neko does Maths(数学数论,lcm,gcd性质)
- 【CodeForces - 1150A】Stock Arbitraging (贪心,水题)
- 详解惯性导航论文 RINS-W: Robust Inertial Navigation System on Wheels
- ubuntu18.04下安装grafana6和简单使用
- java 监听本地端口_Java-在本地端口上侦听RTP数据包
- 计算机专业会议评级,2018计算机专业工程教育认证研讨会