日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件

發布時間:2024/9/27 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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上传下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。