报表知识库
我要提问

ftp方式上传报表模板

需求说明:
          做好的报表一般上传用的是http方式上传到服务器,那么这个Http上传会出现一个问题如果在上传的过程突然断网那么这个附件就要重新上传了,http方式不会支持续传,那么这里介绍一种ftp方式上传。
FTP(File Transfer Protocol,文件传输协议是Internet上使用非常广泛的一种通讯协议,它是为Internet用户进行文件传输(包括文件的上传和下载)而制定的。要想实现FTP文件传输,必须在相连的两端都装有支持FTP协议的软件,装在您的电脑上的叫FTP客户端软件,装在另一端服务器上的叫做FTP服务器端软件。
实现方法:
          先下载一个ftp服务端,在服务端在创建一个用户名、上传的路径、相应的权限,至少要选择一个允许上传,同时在服务端一些过滤具体见附件中提供的ftp服务端,服务端配置好了以后就要通过代码的方式写一个客户端了,代码如下


/**
 * @description FTP文件上传
 * @author
 * @datetime
 */
public class TestApacheFtpFileOperation {
 
 private static final String SERVERIP = “192.168.1.65″;//ftp服务器地址
 private static final String USERNAME = “mjg”;//ftp上创建的账号
 private static final String PASSWORD = “123″;//ftp上创建的密码
 
 public static void main(String[] args) {
  System.out.println(“start…”);
  TestApacheFtpFileOperation.fileUpload();
  System.out.println(“END…”);
 }
 
 /**
  * FTP 上传单个文件
  */
 public static void fileUpload(){  
  FTPClient ftpClient = new FTPClient();
  FileInputStream fis = null;
  
  try {
   ftpClient.connect(SERVERIP); //ftp服务器IP地址
   ftpClient.login(USERNAME, PASSWORD); //ftp服务器用户名与密码
   
   String localUrl=”D:\\123.jpg”; 
   File file = new File(localUrl); //上传本地的一个文件
   
   fis = new FileInputStream(file);
   
   ftpClient.setBufferSize(1024); //设置缓存
   ftpClient.setControlEncoding(“UTF-8″);
   ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //设置文件类型(二进制)
   String rename = “123.jpg”;//放在服务器上的名字,这个时候也可以重命名叫456.jpg
   ftpClient.storeFile(new String(rename.getBytes(“GBK”),”iso-8859-1″), fis); //保存文件  
   
  } catch (IOException e) {
   e.printStackTrace();
   throw new RuntimeException(“FTP客户端出错!”,e);
  } finally{
   IOUtils.closeQuietly(fis);
   try {
    ftpClient.disconnect(); //关闭FTP连接
   } catch (IOException e) {
    e.printStackTrace();
    throw new RuntimeException(“关闭FTP接连失败!”,e);
   }
  }
 }
 
 /**
  * FTP 单个文件下载
  */
 public static void fileDownload(){
  FTPClient ftpClient = new FTPClient();
  FileOutputStream fos = null;
  
  try {
   ftpClient.connect(SERVERIP); //ftp服务器IP地址
   ftpClient.login(USERNAME, PASSWORD); //ftp服务器用户名与密码
   
   String remoteFile = “/zf/fileStore/new.text”;   
   fos = new FileOutputStream(“zf.text”);
   
   ftpClient.setBufferSize(1024); //设置缓存   
   ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); //设置文件类型(二进制)
   ftpClient.retrieveFile(remoteFile, fos);
   
  } catch (IOException e) {
   e.printStackTrace();
   throw new RuntimeException(“FTP客户端出错!”,e);
  } finally{
   IOUtils.closeQuietly(fos);
   try {
    ftpClient.disconnect(); //关闭FTP连接
   } catch (IOException e) {
    e.printStackTrace();
    throw new RuntimeException(“关闭FTP接连失败!”,e);
   }
  }  
 }


}


以上就实现了FTP客户端与服务器端的连接,就可以把附件上传到服务器了,附件中有ftp服务器端、JAVA代码