展开全部

form表单提交文件,建议用62616964757a686964616fe59b9ee7ad9431333264623862smartupload上传,暂存在web服务器目录下,然后稍微一下下面的代码,ftp上传后,删除暂存文件,ok

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.StringTokenizer;

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;

/**

* Ftp 服务类,对Apache的commons.net.ftp进行了包装

* 依赖库文件:commons-net-1.4.1.jar

*

* @version 1.0 2008-02-18

* @author huchao@jbsoft

*/

public class FtpService {

public FtpService(String serverAddr, String lsenport, String userName,

String pswd) {

this.ftpServerAddress = serverAddr;

this.port = Integer.parseInt(lsenport);

this.user = userName;

this.password = pswd;

}

/**

* FTP 服务器地址

*/

private String ftpServerAddress = null;

/**

* FTP 服务端口

*/

private int port = 21;

/**

* FTP 用户名

*/

private String user = null;

/**

* FTP 密码

*/

private String password = null;

/**

* FTP 数据传输超时时间

*/

private int timeout = 0;

/**

* 异常:登录失败

*/

private final I2HFException EXCEPTION_LOGIN = new I2HFException("COR101",

"FTP服务器登录失败");

/**

* 异常:文件传输失败

*/

private final I2HFException EXCEPTION_FILE_TRANSFER = new I2HFException(

"COR010", "FTP文件传输失败");

/**

* 异常:IO异常

*/

private final I2HFException EXCEPTION_GENERAL = new I2HFException("COR010",

"FTP IO 异常");

private static final Logger logger = Logger.getLogger(FtpService.class);

/**

* 初始化FTP连接,并进行用户登录

*

* @return FTPClient

* @throws I2HFException

*/

public FTPClient initConnection() throws I2HFException {

FTPClient ftp = new FTPClient();

try {

// 连接到FTP

ftp.connect(ftpServerAddress, port);

int reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

throw new I2HFException("COR010", "FTP服务器连接失败");

}

// 登录

if (!ftp.login(user, password)) {

throw EXCEPTION_LOGIN;

}

// 传输模式使用passive

ftp.enterLocalPassiveMode();

// 设置数据传输超时时间

ftp.setDataTimeout(timeout);

logger.info("FTP服务器[" + ftpServerAddress + " : " + port + "]登录成功");

} catch (I2HFException te) {

logger.info(te.errorMessage, te);

throw te;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_LOGIN;

}

return ftp;

}

/**

* 设置传输方式

*

* @param ftp

* @param binaryFile

* true:二进制/false:ASCII

* @throws I2HFException

*/

public void setTransferMode(FTPClient ftp, boolean binaryFile)

throws I2HFException {

try {

if (binaryFile) {

ftp.setFileType(FTP.BINARY_FILE_TYPE);

logger.info("FTP文件传输方式为:二进制");

} else {

ftp.setFileType(FTP.ASCII_FILE_TYPE);

logger.info("FTP文件传输方式为:ASCII");

}

} catch (IOException ex) {

logger.info(ex.getMessage(), ex);

throw EXCEPTION_GENERAL;

}

}

/**

* 在当前工作目录下建立多级目录结构

*

* @param ftp

* @param dir

* @throws I2HFException

*/

public void makeMultiDirectory(FTPClient ftp, String dir)

throws I2HFException {

try {

StringBuffer fullDirectory = new StringBuffer();

StringTokenizer toke = new StringTokenizer(dir, "/");

while (toke.hasMoreElements()) {

String currentDirectory = (String) toke.nextElement();

fullDirectory.append(currentDirectory);

ftp.makeDirectory(fullDirectory.toString());

if (toke.hasMoreElements()) {

fullDirectory.append('/');

}

}

} catch (IOException ex) {

logger.info(ex.getMessage(), ex);

throw EXCEPTION_GENERAL;

}

}

/**

* 更改服务器当前路径

*

* @param ftp

* @param dir

* @throws I2HFException

*/

public void changeWorkingDirectory(FTPClient ftp, String dir)

throws I2HFException {

try {

if (!ftp.changeWorkingDirectory(dir)) {

throw new I2HFException("COR010", "目录[ " + dir + "]进入失败");

}

} catch (I2HFException tfe) {

logger.info(tfe.errorMessage, tfe);

throw tfe;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_GENERAL;

}

}

/**

* 上传文件到FTP服务器

*

* @param ftp

* @param localFilePathName

* @param remoteFilePathName

* @throws I2HFException

*/

public void uploadFile(FTPClient ftp, String localFilePathName,

String remoteFilePathName) throws I2HFException {

InputStream input = null;

try {

input = new FileInputStream(localFilePathName);

boolean result = ftp.storeFile(remoteFilePathName, input);

if (!result) {

// 文件上传失败

throw EXCEPTION_FILE_TRANSFER;

}

logger.info("文件成功上传到FTP服务器");

} catch (I2HFException tfe) {

logger.info(tfe.getMessage(), tfe);

throw tfe;

} catch (IOException ioe) {

logger.info(ioe.getMessage(), ioe);

throw EXCEPTION_FILE_TRANSFER;

} finally {

try {

if (input != null) {

input.close();

}

} catch (IOException ex) {

logger.info("FTP对象关闭异常", ex);

}

}

}

/**

* 下载文件到本地

*

* @param ftp

* @param remoteFilePathName

* @param localFilePathName

* @throws I2HFException

*/

public void downloadFile(FTPClient ftp, String remoteFilePathName,

String localFilePathName) throws I2HFException {

boolean downloadResult = false;

OutputStream output = null;

try {

output = new FileOutputStream(localFilePathName);

downloadResult = ftp.retrieveFile(remoteFilePathName, output);

if (!downloadResult) {

// 如果是文件不存在将异常抛出

throw new I2HFException("COR011", "文件不存在");

}

logger.info("文件成功从FTP服务器下载");

} catch (I2HFException tfe) {

logger.error(tfe.getMessage(), tfe);

throw tfe;

} catch (IOException ex) {

logger.error(ex.getMessage(), ex);

throw EXCEPTION_FILE_TRANSFER;

} finally {

try {

if (output != null) {

output.close();

}

if (!downloadResult) {

new File(localFilePathName).delete();

}

} catch (IOException ex) {

logger.error("FTP对象关闭异常", ex);

}

}

}

/**

* Method setFtpServerAddress.

*

* @param ftpServerAddress

* String

*/

public void setFtpServerAddress(String ftpServerAddress) {

this.ftpServerAddress = ftpServerAddress;

}

/**

* Method setUser.

*

* @param user

* String

*/

public void setUser(String user) {

this.user = user;

}

/**

* Method setPassword.

*

* @param password

* String

*/

public void setPassword(String password) {

this.password = password;

}

/**

* Method setTimeout.

*

* @param timeout

* String

*/

public void setTimeout(String timeout) {

try {

this.timeout = Integer.parseInt(timeout);

} catch (NumberFormatException ex) {

// 默认超时时间500毫秒

this.timeout = 500;

}

}

/**

* Method setPort.

*

* @param port

* String

*/

public void setPort(String port) {

try {

this.port = Integer.parseInt(port);

} catch (NumberFormatException ex) {

// 默认端口21

this.port = 21;

}

}

}

=====================================

jsp上传部分

===================================

上传本地文件:

============================================

上传的servlet用的是smartupload

,部分代码可以参考一下:

==========================================

SmartUpload su = new SmartUpload();

su.setCharset("UTF-8");

su.initialize(getServletConfig(), request, response);

su.setMaxFileSize(10240000);

su.setTotalMaxFileSize(102400000);

su.setAllowedFilesList("xls");

su.upload();

===========================================

代码里面有一些客户的信息,不能全部给你哈

本回答由提问者推荐

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java if在内存中_java如何将对象暂存到内存中?相关推荐

  1. java 内存分布_java的各类型数据在内存中分配情况详解_

    1. 有这样一种说法,如今争锋于IT战场的两大势力,MS一族偏重于底层实现,Java一族偏重于系统架构.说法根据无从考证,但从两大势力各自的社区力量和图书市场已有佳作不难看出,此说法不虚,但掌握Jav ...

  2. STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。

    STM32如何从串口接收数据,取出数据中的密码段再保存到flash中 STM32如何从串口接收数据,取出数据中的密码段再保存到flash中u8 Usart2_buf[256]; unsigned in ...

  3. python提取txt数据到excel_python 读取txt中每行数据,并且保存到excel中的实例

    使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数 ...

  4. python逐行读取txt写入excel_python 读取txt中每行数据,并且保存到excel中的实例

    使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数 ...

  5. java加载阶段内存分配_Java核心:类加载和JVM内存的分配

    类的加载: 指的是将class文件的二进制数据读入到运行时数据区(JVM在内存中划分的) 中,并在方法区内创建一个class对象. 类加载器: 负责加载编译后的class文件(字节码文件)到JVM(J ...

  6. java list 截取部分数据_Java List.subList()方法:获取列表中指定范围的子列表

    集合类中的 List.subList() 方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法: subList(int fromIndex,i ...

  7. java编写教师类输出_Java类和对象的区别和联系,超简单易懂!

    在面向对象的编程语言中,类和对象必然是最核心的特性之一.本文主要介绍Java中的类和对象. 示例 以班级成员为例,班上有小红.小明.小李,还有王老师.张老师和魏老师,我们认为他们都属于"人类 ...

  8. mathtype中公式导入matlab中,如何将MathType公式保存到Word中

    在文档中编辑公式是一件很麻烦的事情,因为数学公式编辑起来很麻烦,里面涉及到很多的符号,而这些符号都不是直接在文档中就能编辑出来的,因此要想要Word文档中编辑出数学公式,就一定要借助MathType公 ...

  9. java set第n位_Java学习路线:float在内存中的存储

    Java学习路线:float在内存中的存储,最近在讲Java基础,讲到数据类型的转换,提到整数类型长字节类型数据放到短字节类型数据中时,由于字节数不够,会截断数据,所以需要程序员手动强制类型转换,例如 ...

最新文章

  1. 用Python分析深圳程序员工资有多高?
  2. 《预训练周刊》第36期: 谷歌提出梯度最大化增长方法GradMax
  3. hitTest和pointInside如何响应用户点击事件
  4. jquery 判断数据是否重复
  5. python自动抠头像图_Python实现AI自动抠图实例解析
  6. django不修改数据库创外键_Django——model(建表,增删改查,外键,多对多)
  7. mysql双重分组没有值也要显示_mysql 统计数据,按照日期分组,把没有数据的日期也展示出来...
  8. Golang并发——并发技术Goroutine和channel的使用、定时器、生产者消费者、条件变量、select
  9. 【转载】java中Date与String的相互转化
  10. 该内存不能为read
  11. Vue成大学核心课程
  12. 微信开发——带参数二维码的使用
  13. 数值变量分类问题相关原理知识
  14. BZOJ2118[国家集训队] 墨墨的等式
  15. Caffe(13)--(SSRNet模型)Keras转Caffe教程
  16. 格式工厂DIVX、AVC、HEVC三个格式那个最清晰
  17. Meta 开源首个 AI 语音翻译系统,闽南话和英语可以直接语音互译
  18. 汤唯:在街头卖艺的那些日子
  19. Science fiction list
  20. 快乐大掌柜源码--快乐大掌柜系统开发模式介绍

热门文章

  1. 手机工商银行怎么转账_工商银行信用卡要哪些申请条件?想成功办理你需要了解这些!...
  2. linux下iostat命令无效,linux iostat命令详解
  3. 画出的点做交互_设计之下交互设计原型设计之概念设计
  4. Mysql报错130_mysql 突然报错,连接不上
  5. app账号退不出去_最新!多交的税可以退,同学,你今天退税了吗?
  6. excel不显示0_Excel数字过长不能完整显示?超长数字变为0
  7. 163 coremail_Icoremail企业邮箱
  8. c语言箭头指针的作用,C语言中,结构体成员变量的点和箭头
  9. java电脑运行视频演示_javaweb视频第一天(二)
  10. 按键 粘贴上一个命令_合并单元格、选择性粘贴的快捷键都是啥?今天一次告诉你……...