当前位置: 首页 > news >正文

北京市住房和城乡建设部网站官网wordpress 建站案例

北京市住房和城乡建设部网站官网,wordpress 建站案例,app定制开发公司在哪里,用jsp做网站需要的知识SpringBoot上传下载文件及在线预览今天大概就说说如何使用SpringBoot进行上传和下载以及在线预览文件 本篇主要介绍上传下载的功能#xff0c;对于界面就简单一点#xff0c;大致如下#xff1a;一、老规矩还是先看看小项目的目录结构#xff1a;二、添加对应的pom依赖org.…SpringBoot上传下载文件及在线预览今天大概就说说如何使用SpringBoot进行上传和下载以及在线预览文件 本篇主要介绍上传下载的功能对于界面就简单一点大致如下一、老规矩还是先看看小项目的目录结构二、添加对应的pom依赖org.springframework.bootspring-boot-starter-thymeleaforg.springframework.bootspring-boot-starter-weborg.mybatis.spring.bootmybatis-spring-boot-starter2.1.1org.springframework.bootspring-boot-devtoolsruntimetruemysqlmysql-connector-java5.1.47org.projectlomboklombok1.18.12com.alibabadruid1.1.21commons-fileuploadcommons-fileupload1.3.3三、创建相应的配置spring.application.namefilesserver.port8080server.servlet.context-path/filesspring.thymeleaf.cachefalsespring.thymeleaf.suffix.htmlspring.thymeleaf.encodingUTF-8spring.thymeleaf.prefixclasspath:/templates/spring.resources.static-locationsclasspath:/templates/,classpath:/static/,file:${upload.dir}spring.datasource.typecom.alibaba.druid.pool.DruidDataSourcespring.datasource.driver-class-namecom.mysql.jdbc.Driverspring.datasource.urljdbc:mysql://localhost:3306/files?characterEncodingUTF-8spring.datasource.usernamerootspring.datasource.passwordrootmybatis.mapper-locationsclasspath:/com/baizhi/mapper/*.xmlmybatis.type-aliases-packagecom.baizhi.entity#控制台进行打印日志logging.level.rootinfologging.level.com.baizhi.daodebug#上传和下载文件的路径upload.dirD:/idea_project/java/files/target/classes/static四、先准备登陆界面的工作1、创建实体类DataAllArgsConstructorNoArgsConstructorToStringAccessors(chaintrue)public class User {private Integer id;private String username;private String password;}2、创建对应的dao层public interface UserDAO {User login(User user);}3、创建对应的mapper映射文件select id,username,passwordfrom t_userwhere username#{username}and password #{password}4、创建业务层接口及实现类public interface UserService {User login(User user);}ServiceTransactionalpublic class UserServciceImpl implements UserService{Autowiredprivate UserDAO userDAO;OverrideTransactional(propagation Propagation.SUPPORTS)public User login(User user) {return userDAO.login(user);}}5、创建控制器ControllerRequestMapping(user)Slf4jpublic class UserController {Autowiredprivate UserService userService;/*** 登录方法*/PostMapping(login)public String login(User user, HttpSession session){User userDB userService.login(user);if(userDB!null){session.setAttribute(user,userDB);return redirect:/file/showAll;}else{return redirect:/index;}}}6、创建登陆界面用户登录欢迎访问用户文件管理系统username: password: 7、查看运行后对应的界面五、进行主界面的操作1、创建实体类DataAllArgsConstructorNoArgsConstructorToStringAccessors(chaintrue)public class UserFile {private Integer id;private String oldFileName;private String newFileName;private String ext;private String path;private String size;private String type;private String isImg;private Integer downcounts;private Date uploadTime;private Integer userId; //用户外键}2、创建对应的dao层public interface UserFileDAO {//根据登录用户id获取用户的文件列表 List findByUserId(Integer id);//保存用户的文件记录 void save(UserFile userFile);//根据文件id获取文件信息 UserFile findById(String id);//根据id更新下载次数 void update(UserFile userFile);//根据id删除记录 void delete(String id);}3、创建dao层对应的mapper映射文件select id,oldFileName,newFileName,ext,path,size,type,isImg,downcounts,uploadTime,userIdfrom t_fileswhere userId#{id}insert into t_filesvalues (#{id},#{oldFileName},#{newFileName},#{ext}, #{path},#{size},#{type},#{isImg},#{downcounts}, #{uploadTime},#{userId})select id,oldFileName,newFileName,ext,path,size,type,isImg,downcounts,uploadTime,userIdfrom t_fileswhere id #{id}update t_files set downcounts#{downcounts} where id#{id}delete from t_files where id#{id}4、创建对应的业务层接口及实现类public interface UserFileService {List findByUserId(Integer id);void save(UserFile userFile);UserFile findById(String id);void update(UserFile userFile);void delete(String id);}ServiceTransactionalpublic class UserFileServiceImpl implements UserFileService {Autowiredprivate UserFileDAO userFileDAO;Overridepublic List findByUserId(Integer id) {return userFileDAO.findByUserId(id);}Overridepublic void delete(String id) {userFileDAO.delete(id);}Overridepublic void update(UserFile userFile) {userFileDAO.update(userFile);}Overridepublic UserFile findById(String id) {return userFileDAO.findById(id);}Overridepublic void save(UserFile userFile) {//userFile.setIsImg()? //是否是图片 解决方案: 当类型中含有image时说明当前类型一定为图片类型 String isImg userFile.getType().startsWith(image)?是:否;userFile.setIsImg(isImg);userFile.setDowncounts(0);userFile.setUploadTime(new Date());userFileDAO.save(userFile);}}5、创建控制器(重点)上传文件(且保存到i数据库中)PostMapping(upload)public String upload(MultipartFile aaa, HttpSession session) throws IOException {//获取上传文件用户id User user (User) session.getAttribute(user);//获取文件原始名称 String oldFileName aaa.getOriginalFilename();//获取文件后缀 String extension . FilenameUtils.getExtension(aaa.getOriginalFilename());//生成新的文件名称 String newFileName new SimpleDateFormat(yyyyMMddHHmmss).format(new Date()) UUID.randomUUID().toString().replace(-, ) extension;//文件大小 Long size aaa.getSize();//文件类型 String type aaa.getContentType();//处理根据日期生成目录 //String realPath ResourceUtils.getURL(classpath:).getPath() /static/files; String dateFormat new SimpleDateFormat(yyyy-MM-dd).format(new Date());String dateDirPath uploadPath /files/ dateFormat;File dateDir new File(dateDirPath);if (!dateDir.exists()) dateDir.mkdirs();//处理文件上传 aaa.transferTo(new File(dateDir, newFileName));//将文件信息放入数据库保存 UserFile userFile new UserFile();userFile.setOldFileName(oldFileName).setNewFileName(newFileName).setExt(extension).setSize(String.valueOf(size)).setType(type).setPath(/files/ dateFormat).setUserId(user.getId());userFileService.save(userFile);return redirect:/file/showAll;}下载文件(在线预览)GetMapping(download)public void download(String openStyle, String id, HttpServletResponse response) throws IOException {//获取打开方式 openStyle openStyle null ? attachment : openStyle;//获取文件信息 UserFile userFile userFileService.findById(id);//点击下载链接更新下载次数 if (attachment.equals(openStyle)) {userFile.setDowncounts(userFile.getDowncounts() 1);userFileService.update(userFile);}//根据文件信息中文件名字 和 文件存储路径获取文件输入流 String realpath ResourceUtils.getURL(classpath:).getPath() /static userFile.getPath();//获取文件输入流 FileInputStream is new FileInputStream(new File(realpath, userFile.getNewFileName()));//附件下载 response.setHeader(content-disposition, openStyle ;fileName URLEncoder.encode(userFile.getOldFileName(), UTF-8));//获取响应输出流 ServletOutputStream os response.getOutputStream();//文件拷贝 IOUtils.copy(is, os);IOUtils.closeQuietly(is);IOUtils.closeQuietly(os);}展示所有文件信息GetMapping(showAll)public String findAll(HttpSession session, Model model) {//在登录的session中获取用户的id User user (User) session.getAttribute(user);//根据用户id查询有的文件信息 List userFiles userFileService.findByUserId(user.getId());//存入作用域中 model.addAttribute(files, userFiles);return showAll;}删除文件(及数据库中的)GetMapping(delete)public String delete(String id) throws FileNotFoundException {//根据id查询信息 UserFile userFile userFileService.findById(id);//删除文件 String realPath ResourceUtils.getURL(classpath:).getPath() /static userFile.getPath();File file new File(realPath, userFile.getNewFileName());if(file.exists())file.delete();//立即删除//删除数据库中记录 userFileService.delete(id);return redirect:/file/showAll;}返回当前的文件列表(json格式数据)GetMapping(findAllJSON)ResponseBodypublic List findAllJSON(HttpSession session, Model model) {//在登录的session中获取用户的id User user (User) session.getAttribute(user);//根据用户id查询有的文件信息 List userFiles userFileService.findByUserId(user.getId());return userFiles;}6、创建对应的界面用户文件列表页面$(function(){var time;$(#start).click(function(){console.log(开启定时更新.........);time setInterval(function () {$.get([[{/file/findAllJSON}]], function (res) {//遍历 $.each(res, function (index, file) {$(# file.id).text(file.downcounts);})});}, 3000);});$(#stop).click(function () {console.log(关闭定时更新);clearInterval(time);});});欢迎: 文件列表:开启定时更新结束定时更新ID文件原始名称文件的新名称文件后缀存储路径文件大小类型是否是图片下载次数上传时间操作 下载在线打开删除上传文件:六、创建拦截器public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session request.getSession();Object user session.getAttribute(user);if(user!null) return true;response.sendRedirect(request.getContextPath()/index);return false;}}七、创建过滤器Configurationpublic class InterceptorConfig extends WebMvcConfigurationSupport {Value(${upload.dir})private String upload;Overrideprotected void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginInterceptor()).addPathPatterns(/file/**).excludePathPatterns(/css/**).excludePathPatterns(/js/**);//放行静态资源 静态资源被认为是一个控制器请求 }Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(/**) //代表以什么样的请求路径访问静态资源 .addResourceLocations(classpath:/static/).addResourceLocations(classpath:/templates/).addResourceLocations(file:upload);//本地资源路径必须放在最上面}}八、进行测试初始化上传后下载在线预览删除 变为初始化的样子 有需要源码的可以联系我还是要说说我的个人博客希望大家多多访问谢谢
http://www.zqtcl.cn/news/507149/

相关文章:

  • 网站meta 优化建议桥梁建设设计网站
  • 网站建设 甘肃wordpress rss去掉
  • 网站安全检测大连网龙建站优化推广
  • 人才网官方网站公众号排名优化软件
  • 淘宝返利网站建设软件开发哪里学好
  • 烟台网站制作公司如何注册国外网站
  • discuz企业网站网站可以做音频线吗
  • 怎样制作网站教程哪家好制作网页的的网站
  • 网站没有织梦后台无锡seo公司网站
  • 哈尔滨住房和城乡建设厅网站公司网站建设 费用入账
  • 网站图片缩略图t恤图案设计网站
  • 对招聘网站页面设计做建议网站流量 转化率
  • 怎么样做网站注册量郴州市北湖区
  • 山东企业展厅设计公司济南网站建设优化公司
  • 什么网站免费做游戏工艺品外贸订单网
  • 免费推广网站制作网站设计的技术有
  • 深圳电商网站建设高校学风建设专栏网站
  • 品牌网站建设 2蝌蚪小三网合一的网站怎么做
  • 对二次网站开发的认识wordpress修改图片大小
  • 电商网站项目建设个人网站空间收费
  • 官方网站制作思路樟木头东莞网站建设
  • 怎么寻找做有益做网站的客户大连网站推广
  • 湖南网站开发企业excel网站建设
  • 安康网站建设技巧腾讯建设网站视频下载
  • 如何能让企业做网站的打算中企动力做网站贵吗
  • wordpress 空间常州seo
  • 网站负责人备案采集照具体要求湛江网吧
  • 长春建站模板制作php网站空间购买
  • 网站域名到期怎么办食品包装设计的介绍
  • 建设网站专栏台州cms模板建站