关于图片和视频的文件上传

关于图片和视频的文件上传**

pom.xml文件的引入

     
commons-fileupload        
commons-fileupload
1.3.1    
    
     
commons-io     
commons-io      
2.4    

entity类

private Integer id;
 private String fileType;//文件类型
 private String savePath;//文件路径
 @DateTimeFormat(pattern="yyyy-MM-dd")
 private Date creationTime;//创建时间
 private String puid;//设备id
 private String imgName;//名称

Dao层接口

/**
  * 上传文件
  * @param file
  * @return
  */
 public int addFile(Files file) throws DataAccessException;
 
 /**
  * 查看全部信息
  * @return
  * @throws DataAccessException
  */
 List fileList() throws DataAccessException;
  
 /**
  * 查看全部上传信息
  * 通过文件类型和创建时间进行查询
  * @param fileType
  * @param creationTime
  * @return
  */
 List findLikeByTypeAndByTime(@Param("fileType")String fileType,@Param("creationTime")String creationTime,Pagination pagination) throws DataAccessException;
 
 /**
  * 查询文件类型列表
  * @return
  */
 List getFileType() throws DataAccessException;
 
 /**
  * 通过id删除文件信息
  * @param id
  * @return
  */
 public int deleteFileById(int id) throws DataAccessException;

Dao.xml文件




 
 
   
    INSERT INTO `file`(fileType,savePath,creationTime,puid,imgName) VALUES(#{fileType},#{savePath},now(),#{puid},#{imgName})
   
   
   
     
     
     
   
       
      
   
   
      
   
   
    DELETE FROM `file` WHERE id=#{id}
   

Service接口

/**
  * 上传文件
  * @param file
  * @return
  */
 public int addFile(Files file) throws DataAccessException;
 
 /**
  * 查看全部上传信息
  * 通过文件类型和创建时间进行查询
  * @param fileType
  * @param creationTime
  * @return
  */
 List findLikeByTypeAndByTime(@Param("fileType")String fileType,@Param("creationTime")String creationTime,Pagination pagination) throws DataAccessException;
  
 /**
  * 查询文件类型列表
  * @return
  */
 List getFileType() throws DataAccessException;
  
 /**
  * 通过id删除文件信息
  * @param id
  * @return
  */
 public int deleteFileById(int id) throws DataAccessException;

Service实现层

/**
  * 上传文件
  * @param file
  * @return
  */
 public int addFile(Files file) throws DataAccessException;
 
 /**
  * 查看全部上传信息
  * 通过文件类型和创建时间进行查询
  * @param fileType
  * @param creationTime
  * @return
  */
 List findLikeByTypeAndByTime(@Param("fileType")String fileType,@Param("creationTime")String creationTime,Pagination pagination) throws DataAccessException;
  
 /**
  * 查询文件类型列表
  * @return
  */
 List getFileType() throws DataAccessException;
  
 /**
  * 通过id删除文件信息
  * @param id
  * @return
  */
 public int deleteFileById(int id) throws DataAccessException;

Controller层

@Autowired
 private FilesService fileService;
  
 @RequestMapping("add")
 public void add(Model model){
  
 } 

 /**
  * 上传文件并添加至数据库
  * @param mfile
  * @param file
  * @return  
  * @throws IllegalStateException
  * @throws IOException
  */
 @RequestMapping("addFile3")
 public String addFile3(@RequestParam(value="mfile",required=false)MultipartFile mfile,Files file,HttpServletRequest request) throws IllegalStateException, IOException{
  //文件上传
  //设置文件名称,不能重复,可以使用uuid
  //String name = UUID.randomUUID().toString();
  //设置文件名称,去除空格和———,不能重复,可以使用uuid
  String name = UUID.randomUUID().toString().replace("-", "");
  //获取文件名
  String uuidname = mfile.getOriginalFilename();
  //获取文件后缀
  String extName = uuidname.substring(uuidname.lastIndexOf("."));
  //图片格式BMP、JPG、JPEG、PNG、GIF
  //视频格式avi,nov,MP4,rm,rmvb
  String fileType = null;
  if(extName.equals(".png") || extName.equals(".jpeg") || extName.equals(".bmp") 
    || extName.equals(".gif") || extName.equals(".jpg")){
    fileType = "图片";
    file.setFileType(fileType);
  }else if(extName.equals(".avi") || extName.equals(".nov") || extName.equals(".rm")
    || extName.equals(".mp4")|| extName.equals(".rmvb")){
    fileType = "视频";
    file.setFileType(fileType);
  }
  String imgName = name + extName;
  String str = "/upload/" +imgName;
  file.setSavePath(str);
  //设置路径
  String context_path = request.getSession().getServletContext().getRealPath("");
  System.out.println(context_path);
  File savePath = new File(context_path+str);
  //开始上传
  mfile.transferTo(savePath);
  //添加
  file.setImgName(imgName);
  fileService.addFile(file);
  //return "redirect:fileList";
  return "redirect:fileAll";
 }

//通过id删除文件信息
@RequestMapping("deleteFileById")
 private String deleteFileById(int id) {
  int byId = fileService.deleteFileById(id);
  return "redirect:fileAll";
 }

//分页查看全部信息
// 通过类型查询信息
//通过创建时间查询信息
@RequestMapping("fileAll")
 public void  fileList(HttpServletRequest request,ModelMap model,String fileType,String creationTime, Pagination pagination) {
  //如果前台页面时间的类型type=date,样式不一样,则需要转格式
  //如果引入laydate.js,则type=text,通过jquery获取值
  /*java.util.Date date = null;
  if(creationTime!=null){
   creationTime.replaceAll("/", "-");
   SimpleDateFormat sdf = new SimpleDateFormat(("yyyy-MM-dd"));
   try {
    date = sdf.parse(creationTime);
   } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }*/
  List list = fileService.findLikeByTypeAndByTime(fileType, creationTime, pagination);
  List type = fileService.getFileType();//获取类型
  model.addAttribute("fileType", fileType);//按条件查询选择的类型
  model.addAttribute("creationTime", creationTime);
  model.addAttribute("fileTypes", type);//获取所有类型,放入域中
  model.addAttribute("files", list);
 }

前台显示文件

//显示文件
@RequestMapping("/showImg")
 public void showImg( String imgName, HttpSession session, HttpServletResponse response,HttpServletRequest request){
  String context_path = request.getSession().getServletContext().getRealPath("");
     String savePath = context_path+"/upload/";   //这个路径图片服务器存放地址
     uploadPicture(imgName, response, savePath);
 }
//加载图片抽取方法     使用流的方式读取写入到前台展示出来
private void uploadPicture(String imgName, HttpServletResponse response, String savePath) {
     File file = new File(savePath+imgName);
     if(file.exists()){//判断文件是否存在
         try(
                 FileInputStream fileInputStream = new FileInputStream(file);
                 ServletOutputStream outputStream = response.getOutputStream();
         ){
             byte[] bytes = new byte[1024];
             int count = 0;
             while((count=fileInputStream.read(bytes))!=-1){
                 outputStream.write(bytes,0,count);
                 outputStream.flush();
             }
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }

jsp页面,直接显示文件

  
     
id 类型 地址 创建时间 IP地址 预览
${file.id } ${file.fileType } ${file.savePath } ${file.puid}

引入js



jsp页面通过点击按钮查看放大文件

 
选择类型
id 文件类型 地址 创建时间 IP地址 预览 操作
无文件信息!
${file.id } ${file.fileType } ${file.savePath } ${file.puid} 删除

jquery


 

你可能感兴趣的:(关于图片和视频的文件上传)