jsp文件上传

登录页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>    <form action="do_uplpad_show.jsp" method="post" enctype="multipart/form-data" >
    姓名:<input type="test"name="username"></br>
    性别:<input type="test"name="age"></br>
    文件上传:<input type="file"name="file"></br>
    <input type="submit"value="登录">
    </form>
</body>
</html>

处理页面:

<%@page import="java.util.ArrayList"%>
<%@page import="ch_06.User"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        FileItemFactory fileItemFactory=new DiskFileItemFactory();
        //创建ServletFileUpload对象(上传文件核心对象)
        ServletFileUpload sfu=new ServletFileUpload(fileItemFactory);
        sfu.setSizeMax(1024*300);//限制图片大小 限制300kb
        try{
            
    
        sfu.setHeaderEncoding("UTF-8");
        if(ServletFileUpload.isMultipartContent(request)){
            /*
            解析请对象
            通过集合来获取每一个表单项
            */
            
            List<FileItem>fileItems=sfu.parseRequest(request);
                for(FileItem fileItem:fileItems){
                    //判断fileItem对应的值表单控件是不是普通控件
                    if(fileItem.isFormField()){
                        //此处是普通表单数据
                    String fieldName=fileItem.getFieldName();
                    String value=fileItem.getString("UTF-8");
                    User user=new User();
                        if(fieldName.equals("username")){
                            user.setName(value);    
                        }
                        if(fieldName.equals("age")){
                            user.setAge(value);    
                        }
                    out.println(fieldName+"\t"+value);
                    }else{
                        /*
                        处理文件控件的逻辑
                        首先应该先得到文件上传到服务器的绝对路径
                        要用到application对象
                        */
                    String path= application.getRealPath("/uploadfile");//获取服务器上的文件 写入到服务器上
                        out.println(path);
                        out.println(fileItem.getName());
                        //对于文件上传进行限制 限制上船格式
                        //jpg png gif bmp
                        String fileName=fileItem.getName();
                                 //截取字符串
                                Integer index=fileName.lastIndexOf(".");
                                //获取字符串下标
                            String houzhui =fileName.substring(index+1);
                                //后缀列表
                            List<String>houzhuiList=new ArrayList<>();
                            houzhuiList.add("jpg");
                            houzhuiList.add("png");
                            houzhuiList.add("gif");
                            houzhuiList.add("bmp");
                                if(houzhuiList.contains(houzhui)){
                                    fileItem.write(new File(path,fileItem.getName()));
                                }else{
                                    out.print("<script>");
                                out.print("alert('文件格式不支持 请重新上传');");
                                out.print("history.go(-1);");
                                out.print("</script>");
                                }
                    }
                }
        }else{
            out.println("表单类型不支持文件上传");
        }
        }catch(Exception e){
            out.print("你上传文件已经超出无法上传 最多只支持300kb");
        }
    %>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值