`
yaoweinan
  • 浏览: 138398 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ftp文件上传 、下载

 
阅读更多

使用spring mvc +commons-net-1.4.1.jar 上传文件到ftp,在此之中最好设置为字节传输,否则文件大小会发生变化,图片不是被破坏就是现实不正常。

 

package com.my.springmvc.util;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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

public class FtpTransfer {
	private static Logger logger = Logger.getLogger(FtpTransfer.class);

	/**
	 * 
	 * @param url
	 *            FTP服务器hostname
	 * @param port
	 *            FTP服务器端口
	 * @param username
	 *            FTP登录账号
	 * @param password
	 *            FTP登录密码
	 * @param path
	 *            FTP服务器保存目录
	 * @param filename
	 *            上传到FTP服务器上的文件名
	 * @param input
	 *            输入流
	 * @return 成功返回true,否则返回false
	 */
	public static boolean uploadFile(String url, int port, String username,
			String password, String path, String filename, InputStream input)
			throws Exception {
		boolean success = false;
		FTPClient ftp = new FTPClient();
		ftp.connect(url, port);// 连接FTP服务器
		int reply;
		// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
		ftp.login(username, password);// 登录
		// 设置PassiveMode传输
		ftp.enterLocalPassiveMode();
		// 设置以二进制流的方式传输
		ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
		ftp.setFileType(FTP.BINARY_FILE_TYPE);
		reply = ftp.getReplyCode();
		if (!FTPReply.isPositiveCompletion(reply)) {
			ftp.disconnect();
			logger.error("----------->>>连接ftp服务器失败");
			throw new Exception("----------->>>连接ftp服务器失败");
		}
		logger.info("-----连接ftp服务器成功");
		boolean isChangeWork = ftp.changeWorkingDirectory(path);
		if (!isChangeWork) {
			boolean isMade = ftp.makeDirectory(path);
			if (!isMade) {
				throw new IOException("ftp 上传文件穿件目录失败");
			}
			isChangeWork = ftp.changeWorkingDirectory(path);
		}
		ftp.storeFile(filename, input);
		ftp.logout();
		success = true;
		logger.info("----------->>>文件上传成功");
		if (ftp.isConnected()) {
			try {
				ftp.disconnect();
			} catch (IOException ioe) {
				logger.error("----------->>>ftp连接关闭失败 " + ioe.getMessage());
			}
		}
		return success;
	}

	/**
	 * 
	 * @param url
	 *            FTP服务器hostname
	 * @param port
	 *            FTP服务器端口
	 * @param username
	 *            FTP登录账号
	 * @param password
	 *            FTP登录密码
	 * @param path
	 *            FTP服务器保存目录
	 * @param filename
	 *            FTP服务器下载上的文件名
	 * @param input
	 *            输入流
	 * @return 成功返回true,否则返回false
	 */
	public static boolean downloadFile(String url, int port, String username,
			String password, String path, String filename, OutputStream out)
			throws Exception {
		boolean success = false;
		FTPClient ftp = new FTPClient();
		ftp.connect(url, port);// 连接FTP服务器
		int reply;
		// 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
		ftp.login(username, password);// 登录
		// 设置PassiveMode传输
		ftp.enterLocalPassiveMode();
		// 设置以二进制流的方式传输
		ftp.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
		ftp.setFileType(FTP.BINARY_FILE_TYPE);
		reply = ftp.getReplyCode();
		if (!FTPReply.isPositiveCompletion(reply)) {
			ftp.disconnect();
			logger.error("----------->>>连接ftp服务器失败");
			// throw new Exception("----------->>>连接ftp服务器失败");
		}
		logger.info("-----连接ftp服务器成功");
		boolean isChangeWork = ftp.changeWorkingDirectory(path);
		if (!isChangeWork) {
			throw new IOException("ftp 目录不存在");
		}
		InputStream input = ftp.retrieveFileStream(filename);
		int buf = -1;
		while ((buf = input.read()) != -1) {
			out.write(buf);
		}
		out.flush();
		input.close();
		ftp.logout();
		logger.info("----------->>>文件下载成功");
		if (ftp.isConnected()) {
			try {
				ftp.disconnect();
			} catch (IOException ioe) {
				logger.error("----------->>>ftp连接关闭失败 " + ioe.getMessage());
			}
		}
		return success;
	}
}

 这段是文件封装

分享到:
评论

相关推荐

    FTP文件上传下载器

    FTP文件上传下载器是一款基于FTP(File Transfer Protocol)协议开发的应用程序,主要功能是实现文件的上传和下载。FTP是一种互联网标准,用于在不同网络之间的计算机之间交换文件。这款工具通常由C#编程语言实现,...

    Java FTP文件上传下载

    Java FTP文件上传下载是Java开发中常见的网络编程任务,它涉及到Java语言的Socket编程和FTP(File Transfer Protocol)协议的应用。FTP是一种用于在网络上进行文件传输的标准协议,它允许客户端从服务器上获取文件...

    Ftp 文件上传下载 源代码

    FTP(File Transfer Protocol)文件上传下载源代码是一个基于MFC(Microsoft Foundation Classes)库实现的程序,用于模拟如FlashFXP这样的专业FTP客户端工具。这个源代码提供了对FTP协议的基本支持,包括连接到FTP...

    C#实现的FTP文件上传和下载

    以上就是使用C#的`FtpWebRequest`类实现FTP文件上传和下载的基本步骤。在实际应用中,可能还需要处理异常、错误检查、断点续传等功能。在开发过程中,确保遵循最佳实践,如使用异步操作以提高性能,以及确保数据的...

    C# FTP上传下载文件

    FTP上传下载文件

    FTP文件上传下载Util类

    FTP文件上传下载Util类

    visiual C++开发典型模块大全--FTP文件上传下载模块

    在IT行业中,Visual C++是一种...总之,开发Visual C++的FTP文件上传下载模块涉及网络编程、FTP协议理解、MFC库的使用等多个方面。通过熟练掌握这些知识点,你可以构建出高效、可靠的FTP客户端功能,满足实际项目需求。

    使用java进行ftp文件上传下载demo(含jar)

    这个“使用java进行ftp文件上传下载demo(含jar)”项目提供了一个可运行的示例,帮助开发者了解如何在Java中实现FTP功能。下面我们将详细探讨这个项目涉及的关键知识点。 1. **Java FTP库**: - 为了在Java中实现...

    一种ftp文件上传下载删除操作的方法

    综上所述,FTP文件上传下载删除操作是网络环境中常见的文件管理手段,它简化了跨设备、跨网络的数据交换。尽管现代有许多其他更安全的文件传输协议,但FTP因其简单易用和广泛支持,仍然在很多场景下被广泛应用。

    实现FTP文件上传下载必备jar包commons-net.rar

    虽然现在最新的版本可能更稳定且功能更全,但1.4.1版本依然可以满足基本的FTP文件上传下载需求。 使用Apache Commons Net库的步骤大致如下: 1. **添加依赖**:首先,将`commons-net-1.4.1.jar`添加到你的项目类...

    FTP文件上传下载及日志配置和使用源码

    本源码示例着重讲解如何实现FTP文件上传下载的功能,并结合日志配置和使用,以便在程序运行过程中记录操作详情,便于问题排查和系统监控。 1. FTP文件上传下载: - FTP连接:首先需要建立一个FTP连接,这通常涉及...

    Java_FTP文件上传下载.

    ### Java_FTP文件上传下载详解 #### 一、引言 在现代企业级应用中,文件的批量上传下载成为了一项基本需求,特别是在大规模工程项目的实施过程中,涉及到大量且体积庞大的文件交换。本文旨在深入探讨如何利用Java...

    C# FTP C#实现ftp文件上传下载

    C# FTPC#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载C#实现ftp文件上传下载

    FTP文件上传下载封装和调用.zip

    这个压缩包文件"FTP文件上传下载封装和调用.zip"包含了使用VC++开发的FTP功能的封装和调用示例,主要涉及到以下几个核心知识点: 1. FTP协议原理:FTP允许用户在两台计算机之间交换文件,通过命令和响应的交互完成...

    ftp文件上传下载

    例如,Python中的`ftplib`模块提供了一套完整的FTP API,可以方便地进行文件上传和下载。 总之,FTP作为一种基础的文件传输工具,在日常工作中扮演着重要角色。了解FTP的工作机制和操作方法,对于处理远程文件管理...

    用JAVA实现Ftp文件上传下载

    本文将深入探讨如何使用Java实现FTP文件上传和下载,包括基本概念、核心类库、实现步骤以及测试用例。 首先,Java通过`java.net`和`org.apache.commons.net.ftp`两个主要库支持FTP操作。`java.net`库中的`FTPClient...

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

    ### Java + JSP 实现 FTP 文件上传下载 #### 一、JSP 页面代码实现 在JSP页面中实现从FTP服务器下载文件主要有三种方式: 1. **直接链接文件地址:** - 这种方法最简单直接,用户点击链接后浏览器会尝试打开或...

    Ftp文件上传下载源码

    FTP是一种实现不同主机之间文件共享的软件,只要设置了用户设置了自己的共享目录 当其他用户访问该主机时就可以看到共享文件实现下载和上传的功能

    ftp 文件上传下载应用

    ftp 文件上传下载应用

    FTP 文件上传下载 C++

    在文件上传过程中,"STOR"命令告诉服务器将接收到的数据存储为指定的文件。在C++中,你需要打开本地文件,读取其内容,然后通过数据连接发送到服务器。同样,在文件下载时,你需要接收服务器发送的数据,并将其写入...

Global site tag (gtag.js) - Google Analytics