ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件
最近项目中需要实现将文件先存放到ftp上,需要的时候再从ftp上下载,做的过程中碰到了问题,发现中文文件名的无法上传到ftp上,ftp上的中文文件名的文件下载不下来,几番折腾,终于搞定了,记录一下备忘。
IIS7服务器管理工具适用群体为:机房管理、站长、运维工作、程序员,等需要大量服务器或者电脑的用户朋友。
IIS7服务器管理工具可以批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Ftp客户端批量操作。
下载地址:IIS7服务器管理工具
首先给工程添加maven依赖,pom.xml文件中添加:
- <dependency>
- <groupId>commons-net</groupId>
- <artifactId>commons-net</artifactId>
- <version>1.4.1</version>
- </dependency>
以下是Ftp工具类:
- package com.test.util;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.SocketException;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.apache.commons.net.ftp.FTP;
- import org.apache.commons.net.ftp.FTPClient;
- import org.apache.commons.net.ftp.FTPReply;
- public class FtpUtil {
- private final static Log logger = LogFactory.getLog(FtpUtil.class);
- /**
- * 获取FTPClient对象
- * @param ftpHost FTP主机服务器
- * @param ftpPassword FTP 登录密码
- * @param ftpUserName FTP登录用户名
- * @param ftpPort FTP端口 默认为21
- * @return
- */
- public static FTPClient getFTPClient(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort) {
- FTPClient ftpClient = new FTPClient();
- try {
- ftpClient = new FTPClient();
- ftpClient.connect(ftpHost, ftpPort); // 连接FTP服务器
- ftpClient.login(ftpUserName, ftpPassword); // 登陆FTP服务器
- ftpClient.setControlEncoding("UTF-8"); // 中文支持
- ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
- ftpClient.enterLocalPassiveMode();
- if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
- http://logger.info("未连接到FTP,用户名或密码错误。");
- ftpClient.disconnect();
- } else {
- http://logger.info("FTP连接成功。");
- }
- } catch (SocketException e) {
- e.printStackTrace();
- http://logger.info("FTP的IP地址可能错误,请正确配置。");
- } catch (IOException e) {
- e.printStackTrace();
- http://logger.info("FTP的端口错误,请正确配置。");
- }
- return ftpClient;
- }
- /*
- * 从FTP服务器下载文件
- * @param ftpHost FTP IP地址
- * @param ftpUserName FTP 用户名
- * @param ftpPassword FTP用户名密码
- * @param ftpPort FTP端口
- * @param ftpPath FTP服务器中文件所在路径 格式: ftptest/aa
- * @param localPath 下载到本地的位置 格式:H:/download
- * @param fileName FTP服务器上要下载的文件名称
- * @param targetFileName FTP服务器上要下载的文件名称
- */
- public static void downloadFtpFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String localPath, String fileName, String targetFileName) {
- FTPClient ftpClient = null;
- try {
- ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
- ftpClient.changeWorkingDirectory(ftpPath);
- String f_ame = new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING); //编码文件格式,解决中文文件名
- File localFile = new File(localPath + File.separatorChar + targetFileName);
- OutputStream os = new FileOutputStream(localFile);
- ftpClient.retrieveFile(f_ame, os);
- os.close();
- ftpClient.logout();
- } catch (FileNotFoundException e) {
- logger.error("没有找到" + ftpPath + "文件");
- e.printStackTrace();
- } catch (SocketException e) {
- logger.error("连接FTP失败.");
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- logger.error("文件读取错误。");
- e.printStackTrace();
- }
- }
- /**
- * Description: 向FTP服务器上传文件
- * @param host FTP服务器hostname
- * @param port FTP服务器端口
- * @param username FTP登录账号
- * @param password FTP登录密码
- * @param basePath FTP服务器基础目录
- * @param filePath FTP服务器文件存放路径。例如分日期存放:/2015/01/01。文件的路径为basePath+filePath
- * @param filename 上传到FTP服务器上的文件名
- * @param input 输入流
- * @return 成功返回true,否则返回false
- */
- public static boolean uploadFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String filename, InputStream input) {
- boolean result = false;
- FTPClient ftpClient = new FTPClient();
- try {
- int reply;
- ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort);
- ftpClient.changeWorkingDirectory(ftpPath);
- reply = ftpClient.getReplyCode();
- if (!FTPReply.isPositiveCompletion(reply)) {
- ftpClient.disconnect();
- return result;
- }
- filename = new String(filename.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING); //编码文件名,支持中文文件名
- //上传文件
- if (!ftpClient.storeFile(filename, input)) {
- return result;
- }
- input.close();
- ftpClient.logout();
- result = true;
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- if (ftpClient.isConnected()) {
- try {
- ftpClient.disconnect();
- } catch (IOException ioe) {
- }
- }
- }
- return result;
- }
- public static void main(String[] args) {
- String ftpHost = "192.168.20.40";
- String ftpUserName = "test";
- String ftpPassword = "12345";
- int ftpPort = 21;
- String ftpPath = "test/";
- String fileName = "test_通知_4724.docx";
- //上传一个文件
- try{
- String tmpPath = System.getProperty("java.io.tmpdir");
- FileInputStream in=new FileInputStream(new File("D:" + fileName));
- FtpUtil.uploadFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, fileName, in);
- System.out.println(tmpPath);
- FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, "E:", "test_通知_4724.docx", "测试下载文件.docx");
- } catch (Exception e){
- e.printStackTrace();
- System.out.println(e);
- }
- }
- }
ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件相关推荐
- java获取服务器上指定文件,java 读取服务器上文件
java 读取服务器上文件 [2021-02-04 10:02:14] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...
- java中ftp删除文件,Java 实现ftp 文件上传、下载和删除
实现FTP相关功能 1.下载相应的jar包 commons-net-3.6.jar 2.代码实现 import java.io.File; import java.io.FileInputStream ...
- JAVA安装报1620错误_java安装错误1620
java安装错误1620 [2021-01-31 02:53:38] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...
- Postman报401错误,Unauthorized以及其他接口如何填上token
用Postman测试接口,报401错误,Unauthorized Unauthorized是指没有权限,我们想要测试这个接口,但是前提要用户登录获得权限,现在怎么办呢? 我们测试登录的接口,拿到tok ...
- 直接读取ftp服务器文件,java读取ftp服务器文件
java读取ftp服务器文件 [2021-02-05 07:08:30] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...
- javaftp读取服务器文件,java读取ftp服务器文件
java读取ftp服务器文件 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时上云 ...
- java获取ftp服务器文件,java获取ftp服务器文件
java获取ftp服务器文件 [2021-02-05 07:26:23] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...
- 服务器密码修改db2数据库密码错误,db2数据库近一年运行正常,9月4日晚突然连不上数据库,报密码错误,重启数据库后正常?...
系统环境:aix7+db2 10.5 上层应用报错,因密码校验错误,无法连接数据库:但是在报错的前一刻,数据库连接还是正常的,数据入库也正常. [INFO] 2018-09-04 11:01:11,1 ...
- mysql ora01031_逻辑备库上创建JOB报ORA-01031错误
在逻辑备库上创建任何JOB,包含使用SYS用户去创建,都会报这个: ora-01031 ora-06152 SYS.DBMS_INTERNAL_LOGSTDBY ... 经确认,这个是ORACLE故意 ...
最新文章
- spyder 断点调试python代码
- python程序员工作怎样-现在Python就业薪资高吗?Python程序员前景怎么样?
- 一份超级全面的PHP面试题
- 【UOJ34】—多项式乘法(FFT)
- 【行业进展】谷歌4大AI黑科技部门,你可知
- window.showModalDialog()用法及注意事项
- java中Decimaformat_Java中 DecimalFormat 用法详解
- 修改linux ssh默认端口
- 7-Arco大讲堂(二)
- Windows直接获取文件的哈希值
- NUXT.JS原理简述
- [WCF编程]12.事务:事务概述
- AccuMark 7.6.2 格柏服装软件
- 【radon】图像的radon变换matlab仿真
- Simphony学习2 安全相关(密码和角色)
- 关于Android日历视图控件CalendarView
- 2019年最新个人所得税计算器(源码/网页版/已发布)
- 【工业革命】第四次工业革命:自主经济的崛起
- 截至2017年1月59家金融租赁公司
- 基于Abaqus-Simpack联合仿真车辆-浮置板轨道耦合动力学仿真