图片上传:多图片但图片都可以使用的上传方式,多图片用数组接受就ok了

老规矩,写在工具类中

/**
 * 文件上传(可用于图片上传)
 * @param file 文件file
 * @param fileURL 上传路径
 * @param folderNames (可选填)需要添加的文件夹名称
 * @param maxSize 文件最大限制(m为单位)
 * @return string true为通过上传,然后传出消息,false失败上传,传出对应消息
 */
public static String saveFile(MultipartFile file, String fileURL, int maxSize, String...folderNames) {
    //文件名称
    String fileName=null;
    // 判断文件是否为空
    if (!file.isEmpty()) {
        try {
            //获取文件名加后缀
            fileName = file.getOriginalFilename();
            //文件后缀
            String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());
            //格式判断
            if(fileF.equalsIgnoreCase(".jpg") || fileF.equalsIgnoreCase(".png")
                    || fileF.equalsIgnoreCase(".gif") || fileF.equalsIgnoreCase(".jpeg")){
                maxSize=maxSize*1024*1024;
                if(file.getSize() > maxSize){
                    return "FALSE:"+fileName + "文件超出最大上传,最大上传限制3M!";
                }
                //获取图片存储名称UUID形式
                String name = UUID.randomUUID().toString();
                String filePath = null;//路径名
                String _filePath = null; //追加文件路径
                int i = 0;
                for (String s : folderNames) {
                    _filePath = s+"/";
                    if(i==0){
                        filePath = fileURL + _filePath;
                        i++;
                    }
                }
                filePath = filePath + _filePath;
                filePath = filePath + name + fileF;
                File saveDir = new File(filePath);
                if (!saveDir.exists())
                    saveDir.getParentFile().mkdirs();

                // 转存文件
                file.transferTo(saveDir);
                //返回存储文件名
                return "TRUE:"+filePath;
            }else{
                return "FALSE:"+fileName+"文件不是符合图片格式要求(jpg/jpeg/png/gif)";
            }

        } catch (Exception e) {
            e.printStackTrace();
            return "FALSE:"+fileName+"上传失败!异常信息:"+e.getMessage();
        }
    }
    return "FALSE:"+"上传失败!文件可能为空!(文件不能为空!)";
}

OK完事,很简单,这个方法看懂了怎么掉用就看你自己了,反正封装好了适用我自己的,当然,返回值类型你们自己喜欢,用地图,数组等随便哦。下面说的都是控制器调用操作注意事项(无非就是你传参的注意事项),如果你想完全用我给的这个方法就要看,想改方法就没必要看了。(我一直很喜欢这么做,发方法看做一个电动玩具,里面都装好了改装的东东,用到的时候,给它装上对应的电池【就是参数】就可以完美运行了)

多图片上传在控制器添加一个multipartFile []数组类型的文件就可以了,文件名称相同就可以了文件(自定义)

@RequestParam("files") MultipartFile[] files

然后调用这个方法,方法里面都写好了,看懂的就自己优化改进,反正改来改去也就那样,自己喜欢咯

String str = PictureUploadingUtils.saveFile(coverFile,fileURL,maxSize,String.valueOf(_store.getId()));

注意:这个字段是我用来添加文件夹名称的folderNames 

比如我想给追加文件名给里面加就是了,不想加就不加,可选填字段。

还有用于循环去做多图片保存,该方法只是是单图片上传,在控制器外面调用的时候为循环

MultipartFile[] files就可以了
for (int i = 0; i < files.length; i++) {
    MultipartFile file = files[i];
    // 保存店铺环境图
    String str = PictureUploadingUtils.saveFile(file,fileURL,maxSize,String.valueOf(_store.getId()));

反正方法里面的看懂了基本上怎么调用你自己都会了,

 
String fileURL = "/Users/emcoo-03/www/simplyeat/uploads/";
//最大上传限制3M
int maxSize = 3;

猜你喜欢

转载自blog.csdn.net/qq_34530405/article/details/80783798