java批量上传代码 多文件上传java

谁能说说java批量上传文件的原理,并且给个例子吧 谢了

刚学完多文件上传,希望对你有帮助。

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了临城免费建站欢迎大家使用!

多文件上传,就是把多个文件一起传到指定的位置,他和单文件上传类似,只需要改动几个地方而已即可。首先是上传页面,由于要上传多个文件,所以就必须有多个供用户选择的文件框,然后修改Action,把action中属性的类型修改为list。

action如下:

public class UploadActionMany extends ActionSupport{

private ListFile upload;

private ListString uploadFileName;

public String execute() throws Exception {

// TODO Auto-generated method stub

System.out.print(upload.size());

if(upload!=null){

for (int i = 0; i upload.size(); i++) {

InputStream is=new FileInputStream(upload.get(i)); OutputStream os=new FileOutputStream("d:\\upload\\"+getUploadFileName().get(i)); byte buffer[]=new byte[1024];

int count=0;

while((count=is.read(buffer))0){

os.write(buffer,0,count);

}

os.close();

is.close();

}

}

return SUCCESS;

}

省略set和get方法

jsp如下:

html

head

title文件上传/title

/head

body

s:form action="upload.action" method="post" enctype="multipart/form-data" s:file name="upload" label="上传的文件一"/s:file

s:file name="upload" label="上传的文件二"/s:file

s:file name="upload" label="上传的文件三"/s:file

s:submit value="上传"/s:submit

/s:form

/body

/html

希望对你有帮助,打代码不容易啊,记得给点分

java图片批量上传代码?

用struts也可以实现 多文件上传

下面是我写的代码,作为参考!

/*文件目录*/

public static String [] fileArray={

"logo.png",

"index.swf",

"OEMInfo.txt",

"favicon.ico"};

/**

* @author Caoshun

* @see 接收并保存文件

* */

public static void receiveAndSaveAllFileByPath(ActionForm form,String rootPath1,String rootPath2){

String fileName="";

//获取表单中的文件资源

HashtableObject, Object files = form.getMultipartRequestHandler().getFileElements();

//遍历文件,并且循环保存

//当前处理文件序号

int file_num=1;

for (EnumerationObject e = files.keys(); e.hasMoreElements();) {

/*根据处理的当前文件下标,确定文件名*/

fileName=fileArray[file_num-1];

FormFile file = (FormFile) files.get((String) e.nextElement());

if (file != null file.getFileSize() 0) {

try {

//使用formfile.getInputStream()来获取一个文件的输入流进行保存。

//文件名

//String fileName = file.getFileName();

//System.out.println("debug in AddEnterpriceAction.java on line 152 fileName is : "+fileName);

//文件大小

//int fileSize = file.getFileSize();

//文件流

InputStream is = file.getInputStream();

//将输入流保存到文件

//String rootPath = this.servlet.getServletContext().getRealPath("files");

//往cn中写入

File rf = new File(rootPath1);

FileOutputStream fos = null;

fos = new FileOutputStream(new File(rf, fileName));

byte[] b = new byte[10240];

int real = 0;

real = is.read(b);

while (real 0) {

fos.write(b, 0, real);

real = is.read(b);

}

//往en中写入

File rf2 = new File(rootPath2);

InputStream is2 = file.getInputStream();

FileOutputStream fos2 = null;

fos2 = new FileOutputStream(new File(rf2, fileName));

byte[] b2 = new byte[10240];

int real2 = 0;

real2 = is2.read(b2);

while (real2 0) {

fos2.write(b2, 0, real2);

real2 = is2.read(b2);

}

//关闭文件流

fos.close();

is.close();

fos2.close();

is2.close();

} catch (RuntimeException e1) {

e1.printStackTrace();

} catch (Exception ee) {

ee.printStackTrace();

}

file.destroy();

}

file_num++;

}

}

java中怎么把文件上传到服务器的指定路径?

文件从本地到服务器的功能,其实是为了解决目前浏览器不支持获取本地文件全路径。不得已而想到上传到服务器的固定目录,从而方便项目获取文件,进而使程序支持EXCEL批量导入数据。

java中文件上传到服务器的指定路径的代码:

在前台界面中输入:

form method="post" enctype="multipart/form-data"  action="../manage/excelImport.do"

请选文件:input type="file"  name="excelFile"

input type="submit" value="导入" onclick="return impExcel();"/

/form

action中获取前台传来数据并保存

/**

* excel 导入文件

* @return

* @throws IOException

*/

@RequestMapping("/usermanager/excelImport.do")

public String excelImport(

String filePath,

MultipartFile  excelFile,HttpServletRequest request) throws IOException{

log.info("action:{} Method:{} start","usermanager","excelImport" );

if (excelFile != null){

String filename=excelFile.getOriginalFilename();

String a=request.getRealPath("u/cms/www/201509");

SaveFileFromInputStream(excelFile.getInputStream(),request.getRealPath("u/cms/www/201509"),filename);//保存到服务器的路径

}

log.info("action:{} Method:{} end","usermanager","excelImport" );

return "";

}

/**

* 将MultipartFile转化为file并保存到服务器上的某地

*/

public void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException

{    

FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);

System.out.println("------------"+path + "/"+ savefile);

byte[] buffer =new byte[1024*1024];

int bytesum = 0;

int byteread = 0;

while ((byteread=stream.read(buffer))!=-1)

{

bytesum+=byteread;

fs.write(buffer,0,byteread);

fs.flush();

}

fs.close();

stream.close();

}

javaWEB项目中如何实现批量选择文件并上传呢?有什么好的插件,最好有相关代码例子

jquery.uploadify批量上传控件

[html] 

link href="styles/uploadify.css" rel="stylesheet" type="text/css" / 

script type="text/javascript" src="styles/uploadify.swf"/script 

script type="text/javascript" src="javascripts/jquery.uploadify.min.js"/script  

link href="styles/uploadify.css" rel="stylesheet" type="text/css" /

script type="text/javascript" src="styles/uploadify.swf"/script

script type="text/javascript" src="javascripts/jquery.uploadify.min.js"/script 还有jquery.js,你懂得!

这里注意哦,css文件会引用到这个图片哦,所以请你指定这个图片的位置哦,不然就没有显示这个叉叉哦,这个叉叉是删除按钮的哦,没有就是空白哦!

[javascript]

script 

function snedUpLoad(){ 

var pid = $("#entityId").val();                //这个是我自己获取的自定义参数  

var entityName = $("#entityName").val();       //同上  

$("#uploadify").uploadify({                    //初始化uploadify  uploadify是input的id  

//'debug' : false,                             //dubug模式 ,默认是false  

'auto':false,                                  //自动上传,就是控件自动上传,默认是true  

'multi':true, 

//'successTimeout':99999,                      //超时时间  

'formData':{'pid':pid,'entityName':entityName },//我的参数列表  

//'fileObjName':'uploadify',                   //服务器的属性名字  

'uploader':'你的后台url地址;jsessionid=${pageContext.session.id}',//提交服务器路径,这里

说明下;jsessionid=${pageContext.session.id},这个是用于非IE内核的浏览器兼容的  

'swf':"styles/uploadify.swf",                  //flash文件,官方的文件,引用上就是了  

//'uploader': '/Home/Upload',                  //文件保存路径   用处不大  

'buttonText': '文件上传',           //按钮  

//'height':'32',                //浏览按钮的高度     

//'width':'100',                               //浏览按钮的宽度  

'fileTypeDesc':'支持的格式:',                 //在浏览窗口底部的文件类型下拉菜单中显示的文本  

'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',     //允许上传的文件后缀  

'fileSizeLimit':'3MB',                         //上传文件的大小限制  

'queueSizeLimit' : 25,                         //上传数量  

'onSelectError':function(file, errorCode, errorMsg){  //返回一个错误,选择文件的时候触发  

switch(errorCode) { 

case -100: 

alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!"); 

break; 

case -110: 

alert("文件 ["+file.name+"] 大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!"); 

break; 

case -120: 

alert("文件 ["+file.name+"] 大小异常!"); 

break; 

case -130: 

alert("文件 ["+file.name+"] 类型不正确!"); 

break; 

}, 

'onFallback':function(){             //检测FLASH失败调用  

alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。"); 

}, 

'onUploadSuccess':function(file, data, response){  //上传到服务器,服务器返回相应信息到data里  

if(data){ 

var dataObj=eval("("+data+")");//转换为json对象   

//$('#uploadify').uploadify('upload')  

}); 

/script 

script

function snedUpLoad(){

var pid = $("#entityId").val();                //这个是我自己获取的自定义参数

var entityName = $("#entityName").val();       //同上

$("#uploadify").uploadify({                    //初始化uploadify  uploadify是input的id

//'debug' : false,                             //dubug模式 ,默认是false

'auto':false,                                  //自动上传,就是控件自动上传,默认是true

'multi':true,

//'successTimeout':99999,                      //超时时间

'formData':{'pid':pid,'entityName':entityName },//我的参数列表

//'fileObjName':'uploadify',                   //服务器的属性名字

'uploader':'你的后台url地址;jsessionid=${pageContext.session.id}',//提交服务器路径,这里

说明下;jsessionid=${pageContext.session.id},这个是用于非IE内核的浏览器兼容的

'swf':"styles/uploadify.swf",                  //flash文件,官方的文件,引用上就是了

//'uploader': '/Home/Upload',                  //文件保存路径   用处不大

'buttonText': '文件上传',   //按钮

//'height':'32',    //浏览按钮的高度 

//'width':'100',                               //浏览按钮的宽度

'fileTypeDesc':'支持的格式:',                 //在浏览窗口底部的文件类型下拉菜单中显示的文本

'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',     //允许上传的文件后缀

'fileSizeLimit':'3MB',                         //上传文件的大小限制

'queueSizeLimit' : 25,                         //上传数量

'onSelectError':function(file, errorCode, errorMsg){  //返回一个错误,选择文件的时候触发

switch(errorCode) {

case -100:

alert("上传的文件数量已经超出系统限制的"+$('#file_upload').uploadify('settings','queueSizeLimit')+"个文件!");

break;

case -110:

alert("文件 ["+file.name+"] 大小超出系统限制的"+$('#file_upload').uploadify('settings','fileSizeLimit')+"大小!");

break;

case -120:

alert("文件 ["+file.name+"] 大小异常!");

break;

case -130:

alert("文件 ["+file.name+"] 类型不正确!");

break;

}

},

'onFallback':function(){             //检测FLASH失败调用

alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");

},

'onUploadSuccess':function(file, data, response){  //上传到服务器,服务器返回相应信息到data里

if(data){

var dataObj=eval("("+data+")");//转换为json对象

//$('#uploadify').uploadify('upload')

}

}

});

}

/script

[javascript]

$(function(){ 

snedUpLoad();    //jquery容器加载完运行我们的函数  

}) 

$(function(){

snedUpLoad();    //jquery容器加载完运行我们的函数

})

[html]

input type="file" name="uploadify" id="uploadify" /  //申明控件的容器 

input type="file" name="uploadify" id="uploadify" /  //申明控件的容器

前台页面代码基本就这样了,很好明白,至于后台逻辑和普通上传处理一致的,这里就不列出来的,最后上一张图给大家鉴赏一下

(tip:其实他的批量上传并不是一次全部提交处理的,他是一个一个依次提交,相当是一个for循环,所以后台处理的同时只是一个文件上传,即排序的处理上传文件,就和单个文件上传的代码一样,如果你早有后台的单文件上传代码就不用改,直接调用就行了,可以共用)

从excel表格读取数据用Java代码实现批量上传写入数据库

java操作Excel的一种方法:在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。其中jExcelAPI是一个韩国程序员的作品,虽然没有POI那样血统高贵,但是在使用过程中,感觉简单方便,对中文支持非常好,功能也比较强大。它的下载地址是: 当前的最高版本是2.4。作者的网站上对它的特征有如下描述:

● 支持Excel 95-2000的所有版本

● 生成Excel 2000标准格式

● 支持字体、数字、日期操作

● 能够修饰单元格属性

● 支持图像和图表

搭建环境

将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

基本操作

一、创建文件

拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:

代码(CreateXLS.java):

//生成Excel的类

import java.io.*;

import jxl.*;

import jxl.write.*;

public class CreateXLS

{

public static void main(String args[])

{

try

{

//打开文件

WritableWorkbook book=

Workbook.createWorkbook(new File(“测试.xls”));

//生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet=book.createSheet(“第一页”,0);

//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

//以及单元格内容为test

Label label=new Label(0,0,”test”);

//将定义好的单元格添加到工作表中

sheet.addCell(label);

/*生成一个保存数字的单元格

必须使用Number的完整包路径,否则有语法歧义

单元格位置是第二列,第一行,值为789.123*/

jxl.write.Number number = new jxl.write.Number(1,0,789.123);

sheet.addCell(number);

//写入数据并关闭文件

book.write();

book.close();

}catch(Exception e)

{

System.out.println(e);

}

}

}

编译执行后,会在当前位置产生一个Excel文件。

三、读取文件

以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

//读取Excel的类

import java.io.*;

import jxl.*;

public class ReadXLS

{

public static void main(String args[])

{

try

{

Workbook book=

Workbook.getWorkbook(new File(“测试.xls”));

//获得第一个工作表对象

Sheet sheet=book.getSheet(0);

//得到第一列第一行的单元格

Cell cell1=sheet.getCell(0,0);

String result=cell1.getContents();

System.out.println(result);

book.close();

}catch(Exception e)

{

System.out.println(e);

}

}

}

程序执行结果:test

四、修改文件

利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。下面的例子是在我们已经生成的Excel文件中添加一个工作表:

//修改Excel的类,添加一个工作表

import java.io.*;

import jxl.*;

import jxl.write.*;

public class UpdateXLS

{

public static void main(String args[])

{

try

{

//Excel获得文件

Workbook wb=Workbook.getWorkbook(new File(“测试.xls”));

//打开一个文件的副本,并且指定数据写回到原文件

WritableWorkbook book=

Workbook.createWorkbook(new File(“测试.xls”),wb);

//添加一个工作表

WritableSheet sheet=book.createSheet(“第二页”,1);

sheet.addCell(new Label(0,0,”第二页的测试数据”));

book.write();

book.close();

}catch(Exception e)

{

System.out.println(e);

}

}

}

执行结果如图:

高级操作

一、 数据格式化

在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。

1、 字串格式化

字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:

WritableFont font1=

new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ①

WritableCellFormat format1=new WritableCellFormat(font1); ②

Label label=new Label(0,0,”data 4 test”,format1) ③

其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。

②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。

③处使用了Label类的构造子,指定了字串被赋予那种格式。

在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定:

//把水平对齐方式指定为居中

format1.setAlignment(jxl.format.Alignment.CENTRE);

//把垂直对齐方式指定为居中

format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

二、单元格操作

Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

1、 合并单元格

WritableSheet.mergeCells(int m,int n,int p,int q);

作用是从(m,n)到(p,q)的单元格全部合并,比如:

WritableSheet sheet=book.createSheet(“第一页”,0);

//合并第一列第一行到第六列第一行的所有单元格

sheet.mergeCells(0,0,5,0);

合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

2、 行高和列宽

WritableSheet.setRowView(int i,int height);

作用是指定第i+1行的高度,比如:

//将第一行的高度设为200

sheet.setRowView(0,200); 能够获取到java里面那么再封装保存进数据库也就简单了,希望这样可以帮到你。


本文标题:java批量上传代码 多文件上传java
网站URL:http://ybzwz.com/article/docegse.html