javaWeb_上传文件

本文介绍了一个使用Servlet进行文件上传的例子,详细展示了如何通过ServletFileUpload解析请求,并处理上传的文件及表单数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

upload.jsp:

<form action="uploadServlet" method="post" enctype="multipart/form-data">

待上传路径:<input type="file" name="file"></input>

<br>

<input type="submit" value="上传"></input>

</form>


enctype="multipart/form-data"

表示表单以二进制传输据

入两个包

 

 

步骤:

l 得fileItem的集合

l 处理每一个fileItem对象

l 如果是表单域:获取文件名称、大小、输入流等

l 如果是文本域:直接获取名字和值

DiskFileItemFactory factory = new DiskFileItemFactory();

// 设置文件大小,超过这个大小就将其放到下面的临时目录中

factory.setSizeThreshold(1024*500);

File tempDirectory = new File("d:\\javaweb-workspace\\tempDirectory");

factory.setRepository(tempDirectory);

// 得到fileItem的集合

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setSizeMax(1024 * 1024 * 5);// 大小最大只能有5M

upload.setFileSizeMax(1024 * 1024 * 3);// 单个文件最大只能3M

try {

List<FileItem> items = upload.parseRequest(request);

for (FileItem item : items){

// 表单域

if (item.isFormField()){

String name = item.getName();// 返回原因文件名

String fieldName = item.getFieldName();

String value = item.getString();

System.out.println("Name      : " + name);

System.out.println("fieldName : " + fieldName);

System.out.println("getString    : " + value);

}

else{// 文件域

String fieldName = item.getFieldName();

String fileName = item.getName();

String contentType = item.getContentType();

boolean isInMemory = item.isInMemory();// 是否在内存中

long sizeInBytes = item.getSize();// 大小

System.out.println("fieldName   : " + fieldName);

System.out.println("fileName    : " + fileName);

System.out.println("contentType : " + contentType);

System.out.println("isInMemory  : " + isInMemory);

System.out.println("sizeInBytes : " + sizeInBytes);

InputStream in = item.getInputStream();

byte[] buffer = new byte[1024];

int len = 0;

fileName = "d:\\javaweb-workspace\\uploadFile\\" + fileName;

FileOutputStream out = new FileOutputStream(fileName);

while ((len = in.read(buffer)) != -1){

out.write(buffer, 0, len);

}

out.close();

in.close();

}

}

} catch (FileUploadException e) {

e.printStackTrace();

}

页面中选择一个2M多的文件上传,后台输出如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值