`

ftp上传下载文件到服务器

    博客分类:
  • ftp
 
阅读更多
今天公司写了ftp代码上传下载 用的apache提供的common-net包
package com.zte.xh.fund.util;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.SocketException;
import java.nio.channels.FileChannel;
import java.util.Properties;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

import com.jfinal.kit.PropKit;
import com.mysql.jdbc.StringUtils;

/**
 * 用来对文件操作的一些方法
 * 
 * @author Jay_Lee
 *
 */
public class FileUtil {
	// ftp的propertis信息
	private static Properties properties = PropKit.use(
			"config/ftpclient.properties", "utf-8").getProperties();
	// ftp上传的信息
	private static final String IP = properties.getProperty("ip"); // 服务器IP地址
	private static final String USER_NAME = properties.getProperty("userName"); // 用户名
	private static final String PWD = properties.getProperty("pwd"); // 密码
	private static final int PORT = Integer.valueOf(properties
			.getProperty("port")); // 端口号
	public static final String DOWN_PATH = properties.getProperty("filepath");
	public static FTPClient ftpClient = null;

	// copy图片文件
	public static void copyFile(File sourceFile, File toFile) {
		FileInputStream fi = null;
		FileOutputStream fo = null;
		FileChannel in = null;
		FileChannel out = null;
		try {
			fi = new FileInputStream(sourceFile);
			fo = new FileOutputStream(toFile);
			// 得到对应的文件通道
			in = fi.getChannel();
			// 得到对应的文件通道
			out = fo.getChannel();
			// 连接两个通道,并且从in通道读取,然后写入out通道
			in.transferTo(0, in.size(), out);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fi.close();
				in.close();
				fo.close();
				out.close();
			} catch (IOException e) {

				e.printStackTrace();

			}
		}
	}


	// ftp上传文件到服务器
	public static String uploadToFtp(String ftpPath, String filePath,
			String fileName) throws SocketException, IOException {
		String returnMessage = "0";
		try {
			ftpConne();
			int returnCode = ftpClient.getReplyCode();
			FileInputStream fis = null;
			if (FTPReply.isPositiveCompletion(returnCode)) {
				ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
				// 登陆成功设置上传目录
				File f = new File(filePath);
				createPath(ftpPath);
				ftpClient.changeWorkingDirectory(ftpPath);
				fis = new FileInputStream(f);
				ftpClient.storeFile(fileName, fis);
				returnMessage = "1";
				System.out.println(returnMessage + "ok");
			} else {
				returnMessage = "0";
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("FTP客户端出错!", e);
		} finally {
			// 关闭链接
			if (ftpClient.isConnected()) {
				ftpClient.logout();
				ftpClient.disconnect();
			}
		}
		return returnMessage;
	}

	// ftp判断是否存在目录,不存在则创建
	public static void createPath(String paths) {
		try {
			// 解析path的地址是否包含子路劲
			String[] ps = paths.split("/");
			String rp = "";
			boolean isexist = false;
			for (String path : ps) {
				if (StringUtils.isNullOrEmpty(path)) {
					continue;
				}
				rp += "/" + path;
				isexist = ftpClient.changeWorkingDirectory(rp);
				if (!isexist) {
					ftpClient.makeDirectory(path);
					ftpClient.changeWorkingDirectory(rp);
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("创建文件夹出错!", e);
		}
	}

	/**
	 * 从ftp下载文件
	 * 
	 * @param localFileName
	 *            本地文件名
	 * @param remoteFileName
	 *            远程文件名
	 */
	public static String downFromFtp(String localPath, String remotePath,
			String fileName) {
		BufferedOutputStream buffOut = null;
		String result = "";
		try {
			ftpConne();
			buffOut = new BufferedOutputStream(new FileOutputStream(localPath));
			boolean isExist = ftpClient.changeWorkingDirectory(remotePath);
			if (!isExist) {
				result = "3";
				System.out.println("路径不存在");
			}
			ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
			ftpClient.retrieveFile(fileName, buffOut);
			result = "1";
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (buffOut != null)
					buffOut.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return result;
	}

	// ftp的链接
	public static void ftpConne() {
		try {
			ftpClient = new FTPClient();
			ftpClient.setBufferSize(1024 * 1024 * 2);
			ftpClient.setControlEncoding("UTF-8");
			ftpClient.enterLocalPassiveMode();
			ftpClient.connect(IP, PORT);
			ftpClient.login(USER_NAME, PWD);
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("FTP链接出错!", e);
		}
	}

	// 测试demo
	public static void main(String[] args) {
		FileUtil.ftpConne();
		/*
		 * try { FileUtil.uploadToFtp(PATH, "f:" + File.separator +
		 * "checkAccount.xls", "checkAccount.xls"); } catch (IOException e) { //
		 * TODO Auto-generated catch block e.printStackTrace(); }
		 */

		FileUtil.downFromFtp("f:" + File.separator + "xxxx.xls", DOWN_PATH,"checkAccount.xls");

	}
}
分享到:
评论

相关推荐

    springboot以FTP方式上传文件到远程服务器

    "Spring Boot 使用 FTP 方式上传文件到远程服务器" 在本文中,我们将详细介绍如何使用 Spring Boot 框架来实现 FTP 方式上传文件到远程服务器。FTP(File Transfer Protocol)是一种常用的文件传输协议,广泛应用于...

    springboot以FTP方式上传文件到远程服务器的流程

    Spring Boot 中使用 FTP 上传文件到远程服务器的流程 在本文中,我们将介绍如何使用 Spring Boot 实现 FTP 上传文件到远程服务器的流程。这个流程包括如何使用 JWT 登录认证及鉴权的流程,以及如何使用 Spring ...

    MFC实现FTP上传下载文件的客户端和服务器

    3. **文件传输**:FTP客户端可以通过`STOR`命令上传文件到服务器,使用`RETR`命令下载文件。MFC的`CFtpFileFind`类可以帮助查找服务器上的文件,而`CInternetFile`则用于读写文件。 4. **错误处理**:在FTP操作中,...

    java 调用ftp上传、下载文件到服务器

    接着,你可以使用`FTPClient`的`storeFile`方法上传文件: ```java File localFile = new File("/path/to/local/file"); InputStream inputStream = new FileInputStream(localFile); boolean uploadSuccess = ...

    Java FTP 指定下载文件和上传文件到指定的服务器目录

    在本篇文章中,我们将详细介绍如何使用Java编程语言通过FTP(文件传输协议)实现文件的上传与下载功能,并能够将文件指定上传或下载到特定的服务器目录下。此方法已经过测试验证,能够满足基本的需求,并且代码易于...

    c# 实现文件FTP上传服务器

    c# 实现文件FTP上传至服务器  WebClient上传文件至服务器(不带进度条)    要上传的文件(全路径格式)  <param name="strUrlDirPath">Web服务器文件夹路径  <returns>True/False是否上传成功</returns>

    java+jsp代码实现从FTP服务器上传下载文件

    在JSP页面中实现从FTP服务器下载文件主要有三种方式: 1. **直接链接文件地址:** - 这种方法最简单直接,用户点击链接后浏览器会尝试打开或下载该文件。示例代码如下: ```html <a href='ftp://用户名:密码@IP...

    使用前端插件上传文件到ftp服务器

    在前端插件上传文件到FTP服务器时,通常会使用被动模式,因为它更适合通过防火墙和NAT设备工作。 ### 前端上传插件 为了在前端实现文件上传,我们可以利用各种开源插件,如jQuery File Upload、Plupload或Dropzone....

    FTP上传和下载,可以通过本地和服务器之间建立间接,通过FTP方式进行文件操作等

    FTP上传和下载,可以通过本地和服务器之间建立间接,通过FTP方式进行文件操作等

    FTP上传下载,本地同步服务器文件

    之后,他们可以选择远程服务器上的文件或文件夹,然后开始下载到本地。FTP下载同样支持断点续传,即如果下载中断,可以从上次中断的地方继续,而不需要重新开始。 **FTP服务端程序**: FTP服务端程序是运行在服务器...

    Labview FTP上传文件

    Labview FTP上传文件是利用Labview(Laboratory Virtual ...总的来说,Labview FTP上传文件涉及到网络通信、文件操作、错误处理等多个方面,通过熟练掌握这些知识点,用户可以构建高效、可靠的FTP文件传输系统。

    Delphi客户端通过FTP服务器上传或下载文件或图片方法

    除了上传之外,我们还需要实现从FTP服务器下载文件的功能。下载逻辑与上传类似,也需要在界面中显示下载进度。 ```delphi procedure TFormMain.DownloadFileClick(Sender: TObject); var FileName: string; Item:...

    Qt4实现ftp上传下载服务器

    **Qt4实现FTP上传下载服务器** Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面和移动设备的应用程序开发。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,允许用户从远程主机...

    使用QT实现文件上传和下载----ftp服务器

    FTP上传文件的实现可以使用QNetworkAccessManager的put()函数。假设我们有一个本地文件`localFilePath`,我们希望上传到服务器的`remoteFilePath`: ```cpp QFile localFile(localFilePath); if (!localFile.open...

    ftp从服务器上传下载文件

    FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,广泛应用于从服务器上传或下载文件。在Java中,我们可以利用Apache Commons Net库来实现FTP功能。以下是对FTP服务器上传和下载文件的详细...

    Android使用ftp方式实现文件上传和下载

    在 Android 中,FTP 客户端的实现需要使用到 FTPToolkit 类,该类提供了创建 FTP 连接、上传文件、下载文件、删除文件等功能。 ```java public class DownLoad { private FTPClient ftpClient; public void ...

    上传本地文件夹的文件到FTP服务器指定目录

    4. C# FTP上传代码示例:以下是一个简单的C# FTP文件上传示例,展示了如何连接服务器、设置目录并上传文件: ```csharp using System; using System.IO; using System.Net; public class FtpUploader { public ...

    ftp 自动上传文件到服务器

    FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,广泛应用于将文件上传至服务器或从服务器下载文件的场景。在本场景中,我们关注的是如何实现FTP的定时自动上传功能,这通常涉及到脚本编程...

    FTP上传下载文件(VB含源码)

    2. **FTP命令**:FTP协议基于一系列命令,如`CWD`(改变当前工作目录)、`STOR`(上传文件)、`RETR`(下载文件)等。在VB中,可以通过设置`FtpWebRequest.Method`属性来模拟这些命令。 3. **数据流处理**:上传和...

    abap 上传文件到ftp

    abap 上传文件到ftp 比较使用的实例,大家可以学习。

Global site tag (gtag.js) - Google Analytics