首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

文件下传和上载解析

2012-09-22 
文件上传和下载解析表单元素的enctype属性:application/x-www-form-urlencoded(默认)1)默认编码方式,只处

文件上传和下载解析

表单元素的enctype属性:
application/x-www-form-urlencoded(默认)

1)默认编码方式,只处理表单域里的value属性值。

2)可通过request.getParameter()方法取得请求的参数。

multipart/form-data

1)以二进制流的方式处理表单数据,且会将文件域指定的文件内容也封装到请求参数里。

2)无法通过request.getParameter()方法取得请求的参数。

?

?

struts2的文件上传(action属性):

private File xxx;封装该文件对应的文件内容。

private String xxxFileName;该文件的文件名称。

private String xxxContentType;该文件的文件类型。

?

?

fileUpload拦截器:

allowedTypes属性:指定允许上传的文件类型。多文件用","

maximumSize属性:指定允许上传文件的大小。单位是字节。

过滤失败,返回input 逻辑视图。

需要显示的配置defaultStack 拦截器栈

?

?

文件上传的常量配置:

struts.multipart.saveDir:上传文件的临时文件夹。

默认使用javax.servlet.context.tempdir.

此临时文件夹在Tomcat的work\Catalina\localhost\下

应避免使用Tomcat的工作路径作为临时路径

struts.multipart.maxSize:上传文件的最大字节数。

可控制整个struts2应用里的上传文件的大小。

?

?

输出错误提示:

-<s:fileError/>

国际化错误提示的key

struts.message.error.file.too.large:上传文件过大。

struts.message.error.content.type.not.allowed:上传类型错误。

struts.message.error.uploading:文件上传出现未知错误。

?

?

文件下载

stream结果类型

contentType属性:指定被下载文件的文件类型。

inputName属性:指定被下载文件的入口输入流。

contentDisposition:

指定下载文件的处理方式(内联(inline)和附件(attachment))。

通过filename指定下载文件的文件名。

bufferSize属性:指定下载文件时的缓冲大小。

?

?

?

?

?

?

?

?

?

?

?

?

/** * 写入图片 */package org.cric.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class ImgWriteUtil {private BufferedInputStream bis;private BufferedOutputStream bos;public void writeImg(File fromfile, File tofile) {// 写入图片int len = 0;int size = 0;try {bis = new BufferedInputStream(new FileInputStream(fromfile));bos = new BufferedOutputStream(new FileOutputStream(tofile));size = (int) fromfile.length();byte[] buffer = new byte[size];while ((len = bis.read(buffer)) > 0) {bos.write(buffer, 0, len);}} catch (FileNotFoundException e) {e.printStackTrace();throw new RuntimeException("创建文件时出错!");} catch (IOException e) {e.printStackTrace();throw new RuntimeException("读写文件时出错!");} finally {try {if (bos != null) {bos.close();}if (bis != null) {bis.close();}} catch (IOException e) {e.printStackTrace();}}}}

热点排行