<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>文件上传限制</title>
</head>
<body>
    <h2>请选择要上传的文件:</h2>
    <form action='fileUpload.jsp' method='post' enctype='multipart/form-data'>
        <p>请输入存放目录名:<input type='text' name='folderName' value='zhangsan'></p>
        <p>请选择要上传的文件:<input type='file' name='file'></p>
        <p><input type='submit' value='上传'></p>
    </form>
</body>
</html>
<p>&lt;%@ page language='java' contentType='text/html; charset=UTF-8'
pageEncoding='UTF-8'%&gt;
&lt;%@ page import='java.io.File' %&gt;
&lt;%@ page import='java.io.IOException' %&gt;
&lt;%@ page import='java.util.List' %&gt;
&lt;%@ page import='org.apache.commons.fileupload.FileItem' %&gt;
&lt;%@ page import='org.apache.commons.fileupload.disk.DiskFileItemFactory' %&gt;
&lt;%@ page import='org.apache.commons.fileupload.servlet.ServletFileUpload' %&gt;
&lt;%@ page import='org.apache.commons.io.FileUtils' %&gt;</p>
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>文件上传结果</title>
<style type='text/css'>
    img {
        max-width: 300px;
        max-height: 300px;
    }
</style>
</head>
<body>
    <h2>文件上传结果</h2>
    <% 
        // 获取上传文件的存放目录
        String folderName = request.getParameter('folderName');
        if (folderName == null || folderName.trim().length() == 0) {
            out.print('<p style='color:red'>请输入存放目录名</p>');
            return;
        }
        // 如果上传文件的存放目录不存在,则创建该目录
        String uploadFolder = getServletContext().getRealPath('/uploads');
        File folder = new File(uploadFolder, folderName);
        if (!folder.exists()) {
            folder.mkdir();
        }
        // 解析上传文件
        DiskFileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setHeaderEncoding('UTF-8');
        upload.setFileSizeMax(2 * 1024 * 1024); // 限制上传文件的大小为2MB
        List<FileItem> items = upload.parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()) {
                continue; // 如果是普通表单字段,则跳过
            }
            // 获取上传文件的文件名,并根据扩展名判断是否允许上传
            String fileName = item.getName();
            int index = fileName.lastIndexOf('.');
            String nameExt = fileName.substring(index + 1).toLowerCase();
            if (nameExt.equals('jsp')) {
                out.print('<p style='color:red'>不允许上传jsp文件</p>');
                return;
            }
            if (!(nameExt.equals('jpg') || nameExt.equals('jpeg') || nameExt.equals('png') || nameExt.equals('gif') || nameExt.equals('bmp'))) {
                out.print('<p style='color:red'>不允许上传该类型的文件</p>');
                return;
            }
            // 如果上传文件的大小超过2MB,则不保存,并显示提示信息
            if (item.getSize() > 2 * 1024 * 1024) {
                out.print('<p style='color:red'>上传的文件不能超过2MB</p>');
                return;
            }
            // 保存上传文件
            File uploadedFile = new File(folder, fileName);
            item.write(uploadedFile);
            out.print('<p>文件上传成功,文件名:' + fileName + '</p>');
            // 如果上传的是图片文件,则在页面上显示该图片
            if (nameExt.equals('jpg') || nameExt.equals('jpeg') || nameExt.equals('png') || nameExt.equals('gif') || nameExt.equals('bmp')) {
                String imgUrl = request.getContextPath() + '/uploads/' + folderName + '/' + fileName;
                out.print('<p><img src='' + imgUrl + ''></p>');
            }
        }
    %>
</body>
</html>
JavaWeb 文件上传限制示例:限制文件大小,指定存放目录,图片预览

原文地址: https://www.cveoy.top/t/topic/mt5M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录