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