使用Apache Commons FileUpload进行文件上传

本文介绍了一个使用Java实现的文件上传Servlet示例,该Servlet利用Apache Commons FileUpload库解析HTTP请求中的表单数据及文件,实现了文件的服务器端保存,并通过JSP页面展示上传结果。

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

upload2.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
    
        
            username:
            password:
            file1:
            file2:
            
        
    
UploadServlet.java
package com.test.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        DiskFileItemFactory factory = new DiskFileItemFactory();
        String path = request.getRealPath("/");
        factory.setRepository(new File(path));
        factory.setSizeThreshold(1024 * 1024);
        ServletFileUpload upload = new ServletFileUpload(factory);
        try {
            List list = upload.parseRequest(request);
            for (FileItem item : list) {
                if (item.isFormField()) {
                    String name = item.getFieldName();
                    String value = item.getString("gbk");
                    request.setAttribute(name, value);
                } else {
                    String name = item.getFieldName();
                    String value = item.getName();
                    int start = value.lastIndexOf("\\");
                    String fileName = value.substring(start + 1);
                    request.setAttribute(name, fileName);
                    OutputStream os = new FileOutputStream(new File(path, fileName));
                    InputStream is = item.getInputStream();
                    byte[] buffer = new byte[1024];
                    int length = 0;
                    while ((length = is.read(buffer)) > 0) {
                        os.write(buffer, 0, length);
                    }
                    os.close();
                    is.close();
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
        request.getRequestDispatcher("/upload/result2.jsp").forward(request, response);
    }
}
result2.jsp
<%@ page language="java" import="java.io.*"
    contentType="text/html; charset=GBK" pageEncoding="GBK"%>
    
username:${username }
password:${password }
file1:${file1 }
file2:${file2 }
    
web.xml
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
        UploadServlet
        com.test.servlet.UploadServlet
    
    
        UploadServlet
        /UploadServlet
    

转载于:https://my.oschina.net/hpujsj/blog/6843

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值