Java实现多个文件上传(验证文件大小、文件类型)

文件上传是每个java开发者必须掌握的。文件上传有很多种实现方式,但其实也大同小异。笔人在这里为大家介绍一种我习惯用的,上传文件的方式。大家先看代码,最后我会分享我的源码给大家。

  • 1、首先要准备一下需要用到的jar包。
    • commons-fileupload-1.2.1.jar
      -commons-io-1.4.jar
      可以从[(http://commons.apache.org/)]下载,当然,我的项目源码里也有
      然后开始写代码。
public static String fileUpload(HttpServletRequest request,HttpServletResponse response)throws Exception
{
    //允许上传的文件类型
    String fileType = "mp3,mp4,video,rmvb,pdf,txt,xml,doc,gif,png,bmp,jpeg";
    //允许上传的文件最大大小(100M,单位为byte)
    int maxSize = 1024*1024*100;
    response.addHeader("Access-Control-Allow-Origin", "*");
    //文件要保存的路径
    String savePath = request.getRealPath("/") + "save/";
    response.setContentType("text/html; charset=UTF-8");
    //检查目录
    File uploadDir = new File(savePath);
    if ( !uploadDir.exists())
    {
       uploadDir.mkdirs();
    }
    if ( !uploadDir.canWrite())
    {
       return "上传目录没有写权限!";
    }
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(1024 * 1024); //设置缓冲区大小,这里是1M
    factory.setRepository(uploadDir); //设置缓冲区目录

    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setHeaderEncoding("UTF-8");

    List items = upload.parseRequest(request);
    Iterator it = items.iterator();
    FileItem item = null;
    String fileName = "";
    String name = "";
    String extName = "";
    String newFileName = "";
    while (it.hasNext())
    {
        item = (FileItem)it.next();

        fileName = item.getName();
        if (null == fileName || "".equals(fileName))
        {
            continue;
        }

        //判断文件大小是否超限
        if (item.getSize() > maxSize)
        {
            item.delete();
            JOptionPane.showMessageDialog(null, "文件大小超过限制!应小于" + maxSize
                                                / 1024 / 1024 + "M");
            return "文件大小超过限制!应小于" + maxSize;
        }

        //判断文件类型是否匹配
        //            System.getProperties().getProperty("file.separator"))
        //获取文件名称
        name = fileName.substring(fileName.lastIndexOf("\\") + 1,
            fileName.lastIndexOf("."));
        //获取文件后缀名
        extName = fileName.substring(fileName.indexOf(".") + 1).toLowerCase().trim();

        //判断是否为允许上传的文件类型
        if ( !Arrays.<String> asList(fileType.split(",")).contains(extName))
        {
            item.delete();
            JOptionPane.showMessageDialog(null, "文件类型不正确,必须为" + fileType
                                                + "的文件!");
            return "文件类型不正确,必须为" + fileType
                                                + "的文件!";
        }
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        newFileName = name + df.format(new Date()) + "." + extName;
        File uploadedFile = new File(savePath, newFileName);
    item.write(uploadedFile);
    }

    return "success";
}
<form action="<%=basePath%>fileUpload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="file" name="file" />
    <input type="submit" value="上传"> 
</form> 

上面代码就已经ok了。我的一些参数是写死的,比如允许文件上传的大小,还有文件的类型。大家最好是写在一个配置文件中,然后去读取这个配置文件,得到里面的参数。虽然配置文件里的参数也是写死,但是意义不同,作为一个程序员你就是给别人提供方便的,不可能每次已改就要动里面的代码,只需要改配置文件就可以了。这也是需要我们做到智能化。

当然,上面代码只是做到上传的功能,下面我会分享我的源码,源码里面就是写在配置文件里的,然后,如果上传文件不符合要求,就将信息返回到前台可视化显示。

下面分享一下我的源码:文件上传

如果遇到问题大家可以互相交流、切磋!

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌谚轩

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值