首页编程java编程java 上传文件用什么 java实现多文件上传

java 上传文件用什么 java实现多文件上传

编程之家2023-10-11100次浏览

大家好,今天来为大家解答java 上传文件用什么这个问题的一些问题点,包括java实现多文件上传也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

java 上传文件用什么 java实现多文件上传

java web 大文件上传下载

直接把大文件读取为IO流,之后进行上传下载即可,不用担心文件大,是可以分流下载上传的(setBufferSize(1024))。

举例:

import hkrt.b2b.view.util.Log;

java 上传文件用什么 java实现多文件上传

import hkrt.b2b.view.util.ViewUtil;

import java.io.ByteArrayOutputStream;

import java.io.FileInputStream;

java 上传文件用什么 java实现多文件上传

import java.io.FileOutputStream;

import java.io.InputStream;

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

import org.apache.commons.net.ftp.FTPFile;

public class CCFCCBFTP{

/**

*上传文件

*

*@param fileName

*@param plainFilePath明文文件路径路径

*@param filepath

*@return

*@throws Exception

*/

public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception{

FileInputStream fis= null;

ByteArrayOutputStream bos= null;

FTPClient ftpClient= new FTPClient();

String bl="false";

try{

fis= new FileInputStream(plainFilePath);

bos= new ByteArrayOutputStream(fis.available());

byte[] buffer= new byte[1024];

int count= 0;

while((count= fis.read(buffer))!=-1){

bos.write(buffer, 0, count);

}

bos.flush();

Log.info("加密上传文件开始");

Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);

ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);

ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);

FTPFile[] fs;

fs= ftpClient.listFiles();

for(FTPFile ff: fs){

if(ff.getName().equals(filepath)){

bl="true";

ftpClient.changeWorkingDirectory("/"+filepath+"");

}

}

Log.info("检查文件路径是否存在:/"+filepath);

if("false".equals(bl)){

ViewUtil.dataSEErrorPerformedCommon("查询文件路径不存在:"+"/"+filepath);

return bl;

}

ftpClient.setBufferSize(1024);

ftpClient.setControlEncoding("GBK");

//设置文件类型(二进制)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

ftpClient.storeFile(fileName, fis);

Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");

return bl;

} catch(Exception e){

throw e;

} finally{

if(fis!= null){

try{

fis.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

if(bos!= null){

try{

bos.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

}

}

/**

*下载文件

*

*@param localFilePath

*@param fileName

*@param routeFilepath

*@return

*@throws Exception

*/

public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception{

FileInputStream fis= null;

ByteArrayOutputStream bos= null;

FileOutputStream fos= null;

FTPClient ftpClient= new FTPClient();

String SFP= System.getProperty("file.separator");

String bl="false";

try{

Log.info("下载并解密文件开始");

Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);

ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);

ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);

// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);

// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);

FTPFile[] fs;

ftpClient.makeDirectory(routeFilepath);

ftpClient.changeWorkingDirectory(routeFilepath);

bl="false";

fs= ftpClient.listFiles();

for(FTPFile ff: fs){

if(ff.getName().equals(fileName)){

bl="true";

Log.info("下载文件开始。");

ftpClient.setBufferSize(1024);

//设置文件类型(二进制)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

InputStream is= ftpClient.retrieveFileStream(fileName);

bos= new ByteArrayOutputStream(is.available());

byte[] buffer= new byte[1024];

int count= 0;

while((count= is.read(buffer))!=-1){

bos.write(buffer, 0, count);

}

bos.flush();

fos= new FileOutputStream(localFilePath+SFP+fileName);

fos.write(bos.toByteArray());

Log.info("下载文件结束:"+localFilePath);

}

}

Log.info("检查文件是否存:"+fileName+""+bl);

if("false".equals(bl)){

ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");

return bl;

}

return bl;

} catch(Exception e){

throw e;

} finally{

if(fis!= null){

try{

fis.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

if(bos!= null){

try{

bos.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

if(fos!= null){

try{

fos.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

}

}}

备注:以上方法就实现了流的二进制上传下载转换,只需要将服务器连接部分调整为本地的实际ftp服务用户名和密码即可。

JAVA WEB文件上传步骤

JAVA WEB文件上传步骤如下:

实现 Web开发中的文件上传功能,两个操作:在 Web页面添加上传输入项,在 Servlet中读取上传文件的数据并保存在本地硬盘中。

1、Web端上传文件。在 Web页面中添加上传输入项:<input type="file">设置文件上传输入项时应注意:(1)必须设置 input输入项的 name属性,否则浏览器将不会发送上传文件的数据。(2)必须把 form的 enctype属性设为 multipart/form-data,设置该值后,浏览器在上传文件时,将把文件数据附带在 http请求消息体中,并使用 MIME协议对上传文件进行描述,以方便接收方对上传数据进行解析和处理。(3)表单提交的方式要是 post

2、服务器端获取文件。如果提交表单的类型为 multipart/form-data时,就不能采用传统方式获取数据。因为当表单类型为 multipart/form-data时,浏览器会将数据以 MIME协议的形式进行描述。如果想在服务器端获取数据,那么我们必须采用获取请求消息输入流的方式来获取数据。

3、Apache-Commons-fileupload。为了方便用户处理上传数据,Apache提供了一个用来处理表单文件上传的开源组建。使用 Commons-fileupload需要 Commons-io包的支持。

4、fileuplpad组建工作流程

(1)客户端将数据封装在 request对象中。

(2)服务器端获取到 request对象。

(3)创建解析器工厂 DiskFileItemFactory。

(4)创建解析器,将解析器工厂放入解析器构造函数中。之后解析器会对 request进行解析。

(5)解析器会将每个表单项封装为各自对应的 FileItem。

(6)判断代表每个表单项的 FileItem是否为普通表单项 isFormField,返回 true为普通表单项。

(7)如果是普通表单项,通过 getFieldName获取表单项名,getString获得表单项值。

(8)如果 isFormField返回 false那么是用户要上传的数据,可以通过 getInputStream获取上传文件的数据。通过getName可以获取上传的文件名。

java实现多文件上传

即使再多文件也是通过的单个文件逐次上传的(zip等压缩包实际上是一个文件)。实现思路就是将多个文件循环进行上传,上传方法举例:

/**

*上传文件

*

*@param fileName

*@param plainFilePath文件路径路径

*@param filepath

*@return

*@throws Exception

*/

public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception{

FileInputStream fis= null;

ByteArrayOutputStream bos= null;

FTPClient ftpClient= new FTPClient();

String bl="false";

try{

fis= new FileInputStream(plainFilePath);

bos= new ByteArrayOutputStream(fis.available());

byte[] buffer= new byte[1024];

int count= 0;

while((count= fis.read(buffer))!=-1){

bos.write(buffer, 0, count);

}

bos.flush();

Log.info("加密上传文件开始");

Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);

ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);

ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);

FTPFile[] fs;

fs= ftpClient.listFiles();

for(FTPFile ff: fs){

if(ff.getName().equals(filepath)){

bl="true";

ftpClient.changeWorkingDirectory("/"+filepath+"");

}

}

Log.info("检查文件路径是否存在:/"+filepath);

if("false".equals(bl)){

ViewUtil.dataSEErrorPerformedCommon("查询文件路径不存在:"+"/"+filepath);

return bl;

}

ftpClient.setBufferSize(1024);

ftpClient.setControlEncoding("GBK");

//设置文件类型(二进制)

ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

ftpClient.storeFile(fileName, fis);

Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");

return bl;

} catch(Exception e){

throw e;

} finally{

if(fis!= null){

try{

fis.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

if(bos!= null){

try{

bos.close();

} catch(Exception e){

Log.info(e.getLocalizedMessage(), e);

}

}

}

}

备注:只需要修改上传的服务器地址、用户名、密码即可进行服务器访问上传。根据实际需要修改即可。

如果你还想了解更多这方面的信息,记得收藏关注本站。

java开发web用什么软件有哪些,javaweb可以用什么开发java用什么弄游戏,怎么用java做游戏