Java 上传文件图片

工具类方法
PhotoUtils里的方法
//上传图片
public static String uploadFile(HttpServletRequest request, MultipartFile uploadFile) throws IOException {
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMddHHmmssSS”);
String res = sdf.format(new Date());
//设置的保存路径
String rootPath =“E://upload/”;
//原始名称
String originalFilename = uploadFile.getOriginalFilename();
//生成文件名
String newFileName = res + UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//创建年月日文件夹
Calendar date = Calendar.getInstance();
File dateDirs = new File(date.get(Calendar.YEAR)
+ File.separator + (date.get(Calendar.MONTH) + 1) + File.separator + (date.get(Calendar.DATE)));
//新文件
File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);
//判断目标文件所在的目录是否存在
if (!newFile.getParentFile().exists()) {
//如果目标文件所在的目录不存在,则创建父目录
newFile.getParentFile().mkdirs();
}
// System.out.println(newFile);
//将内存中的数据写入磁盘
uploadFile.transferTo(newFile);
//完整的url
String fileUrl = date.get(Calendar.YEAR) + “/” + (date.get(Calendar.MONTH) + 1) + “/” + (date.get(Calendar.DATE)) + “/” + newFileName;
return fileUrl;
}
/**

  • 判断上传文件大小方法
  • @param len
  •        文件长度
    
  • @param size
  •        限制大小
    
  • @return
    */
    public static boolean checkFileSize(Long len, int size) {
    double fileSize = 0;
    fileSize = (double) len / 1048576;
    if (fileSize > size) {
    return false;
    }
    return true;
    }
    Controller中的方法

//上传图片
@RequestMapping(value = “/imageUpload”,method = RequestMethod.POST)
public ResponseOne imageUpload( HttpServletRequest request, MultipartFile multipartFile ) throws IOException {
ResponseOne sendVo = new ResponseOne();
String fileName ="";
//上传图片限制大小
Long len = multipartFile.getSize();
boolean isBig= PhotoUtils.checkFileSize(len,4);
if(!isBig){
sendVo.setData(null);
sendVo.setCode(1);
sendVo.setMsg(“文件超出4M,请压缩后重试”);
sendVo.setCount(0);
return sendVo;
}

try {

//上传实际方法
if(multipartFile.getSize()!=0) {
fileName = PhotoUtils.uploadFile(request,multipartFile);
}}
//上传失败提示
catch (IOException e) {
sendVo.setData(null);
sendVo.setCode(1);
sendVo.setMsg(“上传失败”);
sendVo.setCount(0);
return sendVo;
}
//上传成功
sendVo.setData(fileName);
sendVo.setMsg(“上传成功”);
sendVo.setCount(1);
sendVo.setCode(0);
return sendVo;
}

springBoot 的application.yml配置文件设置上传图片限制,不限制的话最大上传1M会提示报错

spring:
#文件大小 MB必须大写
# maxFileSize 是单个文件大小
# maxRequestSize是设置总上传的数据大小
servlet:
multipart:
enabled: true
max-file-size: 20MB
max-request-size: 20MB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java上传文件图片到服务器的方法主要有两种:使用原生Servlet API实现文件上传,或者使用第三方库(如Apache Commons FileUpload)来简化文件上传过程。 下面是使用原生Servlet API实现文件上传的步骤: 1. 在HTML表单中添加文件上传的input元素,并设置enctype属性为multipart/form-data。 2. 在Servlet中获取上传的文件流,通过Part接口的getInputStream()方法获取文件的字节流。 3. 将文件流写入到服务器磁盘上的指定位置,可以使用Java I/O API中的FileOutputStream类来实现。 下面是示例代码: ```java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置编码为UTF-8 request.setCharacterEncoding("UTF-8"); // 获取上传的文件流 Part filePart = request.getPart("file"); InputStream fileContent = filePart.getInputStream(); // 将文件流写入到服务器磁盘上的指定位置 String fileName = filePart.getSubmittedFileName(); String uploadPath = "/path/to/upload/directory/" + fileName; FileOutputStream out = new FileOutputStream(uploadPath); byte[] buffer = new byte[1024]; int len; while ((len = fileContent.read(buffer)) > 0) { out.write(buffer, 0, len); } out.close(); // 返回上传成功的信息 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("文件上传成功!"); out.flush(); out.close(); } ``` 需要注意的是,这种方法上传的文件大小受限于服务器的设置,如果上传的文件过大,可能导致内存溢出或服务器崩溃。因此,对于大文件的上传,建议使用第三方库来处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值