jsp java文件上传_JSP及Java对于上传文件的处理

上传excel文件,适用于批量操作,网站就常用到

1.在jsp页面中定义input,type类型为file,同时form表单中必须定义编码类型

2.交易定义,field中使用filestyle                                         --此处是PE框架的写法,其他框架不知道

FileStyle

3.使用普通已有模板即可                            --是PE框架的写法,其他框架不知道

4.在模板调用的action中定义处理方法                 --此处是PE框架的写法,其他框架不知道

5.处理方法大致如下:                            --下面的是共用处理方法,其他框架页可以用

//获取上传的文件,此处是PE的,其他框架应该有自己这种数据类型的

MultipartFile mf=(MultipartFile)context.getData("UploadFile");

InputStream is;

HSSFWorkbook workbook=null;

try{

is=file.getInputStream();   //使用输入流转换文件

//这个必须有,调用引入的包中的类处理流文件

POIFSFileSystem fs=new POIFSFileSystem(is);

//创建工作簿对象

workbook=new HSSFWorkbook(fs);

//获取工作表

HSSFSheet sheet=workbook.getSheetAt(0);

.......之后就是对表中的内容遍历,然后放到map(list),再放到context中

使用POI操作excel表格的方法:

//获取工作表

HSSFSheet sheet = workbook.getSheetAt(0);

//获取有效行数

int lrnum = sheet.getLastRowNum();

//获取工作表的行

HSSFRow row = sheet.getRow(j);

//获取单元格,每一小格

row.getCell()

//单元格数据类型

CELL_TYPE_NUMERIC  0数字

CELL_TYPE_STRING  1字符串

CELL_TYPE_FORMULA  2公式

CELL_TYPE_BLANK 3空格

CELL_TYPE_BOOLEAN  4布尔值

CELL_TYPE_ERROR  5错误

上传txt文件

跟上传excel差不多,不过不需要使用特殊的template,直接用以前的就好,在action中对数据进行处理,以下是简单处理的代码:

MultipartFile file=(MultipartFile) context.getData("UploadFile");

InputStream is;

try {

is = file.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br=new BufferedReader(isr);

StringBuffer sb=new StringBuffer();

String s;

while((s=br.readLine())!=null )

sb.append(s+"\r");

br.close();

isr.close();

is.close();

} catch (IOException e) {

e.printStackTrace();

}

上传图片

1.首先在上传的jsp页面,form表单要定义文本格式,与上传excel一样,都是multipart格式,如下:

2.上传的按钮,使用jsp的file类型,如下:

3.页面跳转时,只能使用document来跳转,不能用postData2SRV或者post2SRV方法,否则会报错

document.forms[0].action="UpLoadPictureConfirm.do";

document.forms[0].submit();

4.定义的交易,上传的数据要用filestyle来转换

FileStyle

5. 处理的类中要使用multipartfile获取数据,同时要记得引入spring的一个处理jar包,所以这个上传图片处理方法应该是公共的,其他框架也能用

MultipartFile img=(MultipartFile)context.getData("UpLoadFile");

byte[] tmp=null;

tmp=img.getBytes();

将获取的数据放到byte数组里面,转换成字节流,然后就可以插入到数据库中,注意,数据库对应字段使用的类型最好为blob,因为这个存放图片合适,且足够大

要引入的jar包:spring-webmvc-2.5.6.jar

引入的类:import org.springframework.web.multipart.MultipartFile;

从数据库中获取数据,然后把图片显示在网页中:

1.页面使用img标签,发一个请求,获取数据,返回的是一个流

2.交易的定义,调用类,但是注意,返回的不是页面,而是imgStream流,这个在http.xml文件中有定义的

imgStream,

3.在类中的处理,这里比较麻烦,不能直接用上传类处理后的btye数组,虽然这个类的作用是返回一个byte数组,字节流,但是context中传过来的不行,只能从数据库中查,然后把blob转换为byte数组传给系统类,转换为imgStream流

private byte[] blobToBytes(Blob blob) {

BufferedInputStream is = null;

try {

is = new BufferedInputStream(blob.getBinaryStream());

byte[] bytes = new byte[(int) blob.length()];

int len = bytes.length;

int offset = 0;

int read = 0;

while (offset = 0) {

offset += read;

}

return bytes;

} catch (Exception e) {

return null;

} finally {

try {

is.close();

is = null;

} catch (IOException e) {

return null;

}

}

}

4.所以一般上传图片要使用两个表,一个是临时表,上传的时候就把数据放里面,要显示了,就查数据库,要提交时,就删掉表中的数据

注意:img 中src可以跟超连接的路径,比如网址,也可以跟本地的路径,xxx/xxx

但是这个本地是指项目中的文件,不是电脑上的,也可以跟交易,返回的流

网上说可以直接使用一个方法,传入的数据必须是(Base64)String类型,但实际无效,不知道为啥:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值