ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件
生活随笔
收集整理的這篇文章主要介紹了
ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近項目中需要實現(xiàn)將文件先存放到ftp上,需要的時候再從ftp上下載,做的過程中碰到了問題,發(fā)現(xiàn)中文文件名的無法上傳到ftp上,ftp上的中文文件名的文件下載不下來,幾番折騰,終于搞定了,記錄一下備忘。
IIS7服務器管理工具適用群體為:機房管理、站長、運維工作、程序員,等需要大量服務器或者電腦的用戶朋友。
IIS7服務器管理工具可以批量管理、定時上傳下載、同步操作、數(shù)據(jù)備份、到期提醒、自動更新。IIS7服務器管理工具適用于Windows操作系統(tǒng)和liunx操作系統(tǒng);支持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())) {
ftpClient.disconnect();
} else {
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ftpClient;
}
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();
}
}
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上传下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用计算机写文章 单元备课,信息技术第一单
- 下一篇: mysql提交事务_mysql事务的实现