> 生活笔记  > python
javaweb文件上传

实现web开发中的文件上传功能,需要完成如下两步操作:

1.在web页面中添加上传输入项,表单必须是post提交,文件输入框必须有name属性,并且form表单的enctype属性设置为"multipart/form-data"。

2.在servlet中读取上传文件的数据,并保存到服务器硬盘中。

为方便用户处理文件上传数据,Apache开元组织提供了一个用来处理表单文件上传的开元组件。

实例代码

//创建工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//生产文件上传核心类
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//利用文件上传核心类解析request
List<FileItem> list = fileUpload.parseRequest(request);
//遍历
for(FileItem item : list){
    //普通字段项
    if(item.isFormField){
        item.getFieldName;
    }else{
        //当前是一个文件上传项
        String fileName = item.getName();
        InputStream in = item.getInputStream();
        OutputStream out = new FileOutputStream(this.getServletContext().getRealPath("要保存的文件夹" + fileName));
        //输入流和输出流对接,保存文件,并关闭流
        //...相关代码
    }
}

在文件上传的过程中,需要注意一些细节:

public DiskFileItemFactory(int sizeThreshold, java.io.File respository)
//这个构造器第一个参数用来设定内存缓存区的大小,默认为10kb
//第二个参数用来设定临时文件夹的大小,默认System.getProperty("java.io.temdir")

此外,在ServletFileUpload类中有一些方法需要注意:

//判断上传表单是否为multipart/form-data类型
boolean isMultipartContent(HttpServletRequest request)

//设置单个上传文件的最大值
setFileSizeMax(long fileSizeMax)

//设置上传文件总量的最大值
setSizeMax(long sizeMax)

//设置编码格式,解决上传文件名乱码问题
setHeaderEncoding(String encoding)

还有一个问题是文件名重名的话会覆盖掉以前的文件,所以在设置上传后的文件名字时可以利用UUID生成独一无二的标识名字。

1条评论
用户头像
xjie
流对接可以学习java基础io流的相关知识!

10月11日    回复     顶(0)     举报

猜你喜欢
精品推荐
扫二维码,加好友一起学习吧!