java代码实现多张图片/单张图片文件上传

本文介绍了如何在Java中封装图片上传功能,支持单张或多张图片上传。通过上传文件后返回图片路径,方便前端处理。核心代码包括封装的上传图片工具类和Controller层的实现,使用ResultMsg类传递数据。文章适用于前后端分离的项目,旨在帮助开发者实现图片上传并返回路径,后续可结合其他信息进行保存或修改操作。
摘要由CSDN通过智能技术生成

      在项目中有这样的需求,有多个地方需要用到上传图片的功能,可以上传一张或多张照片。这时候自然想到了封装,来达到复用的目的。前后端分离开发,可以在上传文件后返回图片路径给前端,然后在最后整个需求完成后由前端携带所有的信息(包括刚刚的图片路径)返回给后端进行保存或修改操作。高手可以忽略,不喜勿喷。

核心代码:

package com.pf.bindDate.utils;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import org.springframework.web.multipart.MultipartFile;

public class UploadFileUtil {
	/**
	 * 多张/单张都可以用这个 保存图片
	 * @param      List<MultipartFile> 要批量上传的文件
	 * @param path 图片保存的路径
	 * @return "wrong_file_extension"-错误的后缀, "file_empty"-空文件 或者 保存后的绝对路径
	 */
	public static List<String> uploadFiles(List<MultipartFile> files, String path) throws IOException {
		List<String> msgs = new ArrayList<>();
		if (files.size() < 1) {
			msgs.add("file_empt
首先,需要在前端页面中添加一个上传图片的 input 标签,例如: ```html <form method="post" enctype="multipart/form-data" action="uploadImage"> <input type="file" name="file"/> <input type="submit" value="上传"/> </form> ``` 其中,`enctype="multipart/form-data"` 表示表单数据以多部分(multipart)形式进行编码,可以上传二进制文件。 接下来,在后端控制器中实现上传图片的方法,例如: ```java @Controller public class ImageController { // 上传图片的路径 private String filePath = "D:/images/"; @RequestMapping(value = "/uploadImage", method = RequestMethod.POST) public String uploadImage(@RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { try { // 获取上传文件的文件名 String fileName = file.getOriginalFilename(); // 获取上传文件的后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 生成一个新的文件名 String newFileName = UUID.randomUUID().toString() + suffixName; // 创建一个文件对象 File destFile = new File(filePath + newFileName); // 将上传文件保存到磁盘上 file.transferTo(destFile); // 返回上传成功的页面 return "success"; } catch (IOException e) { e.printStackTrace(); } } // 返回上传失败的页面 return "error"; } } ``` 其中,`@RequestParam("file") MultipartFile file` 表示从前端页面中获取名为 “file” 的文件数据,并转换为 MultipartFile 类型。 接着,通过 `file.getOriginalFilename()` 获取上传文件的文件名,通过 `fileName.substring(fileName.lastIndexOf("."))` 获取上传文件的后缀名。将文件名和后缀名拼接成新的文件名,防止因为文件名相同导致的覆盖问题。 然后,通过 `File destFile = new File(filePath + newFileName);` 创建一个新的文件对象,将上传的文件保存到磁盘上。 最后,根据上传成功或失败返回相应的页面。 需要注意的是,需要在 Spring 的配置文件中添加上传文件的配置: ```xml <!-- 配置文件上传的 bean --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10485760"/> </bean> ``` 其中,`maxUploadSize` 属性表示上传文件的最大大小,单位是字节。上面的配置表示上传的文件大小不能超过 10MB。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值