java 检测文件上传大小,不能超过1M

# 情境
今天上传图片的时候,超过1M,然后上传后,前端页面直接显示报错页面了

这个问题,当时想着,直接前端判断一下,上传文件大小不就行了嘛,而且
个人认为,正常的操作也应该是前端来做,当时前端忙着,且我也是刚进来的新人

故,前端就做了请求,我在后端做判断的

# 问题
网上方案,上传1M的不行,那么就给你10M,这样就不会报错了
但是,我这边需要的是判断当前上传文件大小,是否超过1M
当超过1M的时候,根本不会进入api接口,在拦截层直接就报错了

# 解决
1. 第一种方案,比较直接的,在拦截层处理 (直言:我不会,太久没做了)
2. 第二种方案,因为网上也确实没有直接的解决方案,故,原创解决思路
              因为springboot内置的文件上传大小为1M,先通过配置文件
              将上传文件大小设置为2M,先把请求放进来,其次,就可以处理了
1. springboot配置

spring:
  servlet:
    # 限制上传文件大小
    multipart:
      max-file-size: 2MB
      max-request-size: 2MB
2. 判断上传文件大小 (java代码)

// 检测文件大小 (不能大于1M)
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("imageFile");
long size = multipartFile.getSize();
if(size >= 1048576){
    dataMap.put("message", "图片文件不能大于1M");
    return "seller/mindex/banner/banneredit";
}

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
实现 Java smtp 限制邮件大小超过15M 的方法如下: 1. 使用 JavaMail API 发送邮件时,可以在 Message 对象中设置邮件大小限制。可以通过以下代码实现: ``` MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); // 设置邮件内容 MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(content, "text/plain"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); // 设置邮件大小限制为15M message.setSizeConstraint(15 * 1024 * 1024); // 发送邮件 Transport.send(message); ``` 2. 可以通过在发送邮件前,检查邮件内容的大小,来实现限制邮件大小超过15M。可以通过以下代码实现: ``` MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); // 设置邮件内容 MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(content, "text/plain"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); // 检查邮件大小是否超过15M ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); message.writeTo(outputStream); if (outputStream.size() > 15 * 1024 * 1024) { throw new Exception("邮件大小超过15M"); } // 发送邮件 Transport.send(message); ``` 以上两种方法均可以实现 Java smtp 限制邮件大小超过15M。需要注意的是,邮件大小限制可能会因为邮件附件、邮件内容格式等原因,导致实际邮件大小超过限制大小。因此在实现邮件大小限制时,需要进行充分测试和验证。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值