Java多图片及多文件上传

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27047215/article/details/78457183

底层工具类【UpFileUtil 】

import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

/**
 * 说明:多图片多文件上传
 */
@Component
public class UpFileUtil {
    /**
     * 多图片多文件上传
     * @param file          图片及文件的集合
     * @param request       由Controller带回HttpRequest对象
     * @param filePath      文件的上传根路径
     * @return
     */
    public String uploadPictureList(MultipartFile[] file,
                                    HttpServletRequest request,
                                    String filePath){
        File targetFile=null;
        List imgList=new ArrayList();
        if (file!=null && file.length>0) {
            for (int i = 0; i < file.length; i++) {
                String fileName=file[i].getOriginalFilename();
                if(fileName!=null&&fileName!=""){
                    //获取文件后缀名称
                    String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());
                    //生成新的文件名称
                    fileName=new Date().getTime()+"_"+new Random().nextInt(1000)+fileF;
                    //存储文件夹设置 根据项目情况可进行调配
                    //……待优化部分Loading
                    String fileAdd = DateUtil.getDays();
                    if(fileF.equals("jpg")||fileF.equals("png")||
                            fileF.equals("jpeg")||fileF.equals("gif")){
                        fileAdd = fileAdd +  File.separator  + "imgFile";
                    }
                    if(fileF.equals("doc")||fileF.equals("docx")||
                            fileF.equals("zip")||fileF.equals("xls")
                            ||fileF.equals("xlsx")||fileF.equals("7z")){
                        fileAdd = fileAdd +  File.separator  + "docFile";
                    }
                    //存储文件(判断文件夹及文件名称是否已经存在)
                    File file1 =new File(filePath);
                    if(!file1 .exists()  && !file1 .isDirectory()){
                        file1 .mkdir();
                    }
                    targetFile = new File(file1, fileName);
                    try {
                        file[i].transferTo(targetFile);
                        imgList.add(fileAdd + File.separator +fileName);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        //只需要单文件或图片时,优化存储json数据[简化前台对单文件获取的操作]
        if(file.length == 1){
            return JSON.toJSONString(imgList.get(0));
        }else{
            return JSON.toJSONString(imgList);
        }
    }
}

Controller调用方式

      //图片处理
        String  ffile = DateUtil.getDays(), fileName = "";
        if (null != customer_head_portrait && customer_head_portrait.length != 0) {
            String filePath = PathUtil.getClasspath()+ Const.FILEPATHFILE + ffile;
                     **item.setCustomerHeadPortrait(upFileUtil.uploadPictureList(customer_head_portrait,request,filePath));**

        }else{
            item.setCustomerHeadPortrait("");
        }

PathUtil处理类

public class PathUtil {
    /**
     * 获取项目根目录
     * @return
     */
    public static String getClasspath(){
        String path = (String.valueOf(Thread.currentThread().getContextClassLoader().getResource(""))+"../../").replaceAll("file:/", "").replaceAll("%20", " ").trim();
        if(path.indexOf(":") != 1){
            path = File.separator + path;
        }
        return path;
    }
}

Const配置类

/**
  *根据实际情况 可以省略
  **/
public class Const {

    public static final String FILEPATHFILE = "uploadFiles/file/";        //文件上传路径
}

前端使用【表单提交测试】

<form action="http://localhost/customer_basics/new" method="post" enctype="multipart/form-data" >
  <input type="text" name="customer_name" value="测试用户"/>
  <input type="file" name="customer_head_portrait"    accept="image/jpg,image/jpeg,image/png,image/bmp" **multiple**/><!--如不需要多图片多文件 则去掉multiple即可-->
  <input type="submit" value="Submit" />
</form>

前端使用【Js】

 $.ajaxFileUpload({
                      url:"",//调用的服务请求URL 
                      secureuri:false,  
                      fileElementId:"", //获取的上传文件框(input File)属性ID
                      dataType: 'json',   //数据格式
                      contentType: false,    //文件拓展名类型
                      processData: false,    //是否需要对数据进行序列化
                    success: function (data){
                        if(data!=null){
                            //上传成功后的处理
                            alert("上传成功");
                        }else{
                            alert("上传失败");  
                        }                   
                    },
                    error:function(XMLHttpRequest, textStatus, errorThrown){  
                        alert("上传失败");
                   } 
                });
            }
        }

底层部分还有些需要优化的地方,在优化测试完成后,我会更新本文,谢谢大家支持~~~

猜你喜欢

转载自blog.csdn.net/qq_27047215/article/details/78457183
今日推荐