ssm怎么实现视频的上传和播放
发表于:2025-11-19 作者:千家信息网编辑
千家信息网最后更新 2025年11月19日,这篇文章将为大家详细讲解有关ssm怎么实现视频的上传和播放,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。视频上传:@RequestMapping(value = "
千家信息网最后更新 2025年11月19日ssm怎么实现视频的上传和播放
这篇文章将为大家详细讲解有关ssm怎么实现视频的上传和播放,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
视频上传:
@RequestMapping(value = "dofunction", method = RequestMethod.POST) public void handler(HttpServletRequest request, HttpServletResponse response, @RequestParam("myvideo") MultipartFile file) throws IOException { String message = ""; try { Video media = new Video(); // 解析数据 media.setName(request.getParameter("name")); media.setDescription(request.getParameter("description")); boolean flag = false; // 转码成功与否的标记 // 上传文件 ServletContext sctx = request.getServletContext(); // 获得保存文件的路径 String basePath = sctx.getRealPath("videos"); // 获得文件名 String fileUrl = file.getOriginalFilename(); // 在某些操作系统上,item.getName()方法会返回文件的完整名称,即包括路径 String fileType = fileUrl.substring(fileUrl.lastIndexOf(".")); // 截取文件格式 // 自定义方式产生文件名 String serialName = String.valueOf(System.currentTimeMillis()); // 待转码的文件 File uploadFile = new File(basePath + "/temp/" + serialName + fileType); // 保存文件 Streams.copy(file.getInputStream(),new FileOutputStream(uploadFile.getAbsolutePath()),true); // 判断文件的大小 if (file.getSize() > 500 * 1024 * 1024) { message = "上传失败!您上传的文件太大,系统允许最大文件500M"; } String codcFilePath = basePath + "/" + serialName + ".flv"; // 设置转换为flv格式后文件的保存路径 String mediaPicPath = basePath + "/images" + File.separator + serialName + ".jpg"; // 设置上传视频截图的保存路径 // 获取配置的转换工具(ffmpeg.exe)的存放路径 String ffmpegPath = request.getServletContext().getRealPath("/tools/ffmpeg.exe"); media.setAddress("videos/" + serialName + ".flv"); media.setPicture("videos/images/" + serialName + ".jpg"); media.setUptime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis()))); // 转码 flag = serviceFactory.getMediaService().executeCodecs(ffmpegPath, uploadFile.getAbsolutePath(), codcFilePath, mediaPicPath); if (flag) { // 转码成功,向数据表中添加该视频信息 serviceFactory.getMediaService().saveMedia(media); message="上传成功"; } request.setAttribute("message", message); } catch (Exception e) { e.printStackTrace(); } MyWebPrinter.print(response,""); }视频播放:
@RequestMapping("play") public String play(int id, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String idstr = id + ""; int mediaId = -1; Video media = null; if (null != idstr) { mediaId = Integer.parseInt(idstr); } try { media = serviceFactory.getMediaService().queryMediaById(mediaId); System.out.println(media.toString()); } catch (Exception e) { e.printStackTrace(); } request.setAttribute("media", media); return "video-detail"; }用户使用shiro安全框架进行登录:
public class ShiroRealm extends AuthorizingRealm{ @Autowired UserService userService; protected AuthenticationInfo doGetAuthenticationInfo (AuthenticationToken authenticationToken) throws AuthenticationException { //此处的authenticationToken和controller中的UsernamePasswordToken是同一个,是controller中传过来的 //System.out.println("doGetAuthenticationInfo " + authenticationToken.hashCode()); //1. 把 AuthenticationToken 转换为 UsernamePasswordToken UsernamePasswordToken upToken = (UsernamePasswordToken) authenticationToken; //2. 从 UsernamePasswordToken 中来获取 username String username = upToken.getUsername(); //3. 调用数据库的方法, 从数据库中查询 username 对应的用户记录(登录名和密码) //System.out.println("从数据库中获取 username: " + username + " 所对应的用户信息."); User user = userService.findUserByEmail(username); System.out.println(user.getEmail() + ", " + user.getPassword()); //4. 若用户不存在, 则可以抛出 UnknownAccountException 异常// if("unknown".equals(username)){// throw new UnknownAccountException("用户不存在!");// } //5. 根据用户信息的情况, 决定是否需要抛出其他的 AuthenticationException 异常// if("monster".equals(username)){// throw new LockedAccountException("用户被锁定");// } //6. 根据用户的情况来构建 AuthenticationInfo对象并返回 通常用的实现类为: SimpleAuthenticationInfo //以下信息是从数据库中获取的. //(1). principal : 认证的实体信息 可以是 username 也可以是数据表对应的用户的实体类对象 Object principal = username; //(2). credentials : 密码. Object credentials = null; if(user.getEmail().equals(username)){ credentials = user.getPassword(); } //(3). realmName : 当前realm对象的name 调用父类的getName()方法即可 String realmName = getName(); //(4). salt : 盐值 这里用username作为盐值 因为用户名是唯一的 ByteSource salt = ByteSource.Util.bytes(username); SimpleAuthenticationInfo info = null; info = new SimpleAuthenticationInfo(principal,credentials,salt,realmName); return info; } //测试获取加密后的密码 本例原密码123456,加密2次 public static void main(String[] args) { String hashAlgorithmName = "MD5"; Object credentials = "123456"; //Object salt = ByteSource.Util.bytes("lewy@9.com");//9be0a8423bbe47b9ab62b964d0e5b434 Object salt = ByteSource.Util.bytes("muller@25.com");//9c377556e3611b4e4fe3d844f1a7135a int hashIterations = 2; //将一个字符串进行MD5加密 Object result = new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations); System.out.println(result); } //授权会被shiro回调的方法 protected AuthorizationInfo doGetAuthorizationInfo (PrincipalCollection principalCollection) { //1. 从 PrincipalCollection 中来获取登录用户的信息 // 注意如果是多realm,获取的principal也是有顺序的 Object principal = principalCollection.getPrimaryPrincipal(); //2. 利用登录的用户的信息来查用户当前用户的角色或权限(可能需要查询数据库) User_Role user_role = userService.findUserRoleByEmail((String) principal); System.out.println("角色为:" + user_role.getRole_name()); Set roles = new HashSet(); roles.add("user");//给所有用户添加user权限 if(user_role.getRole_name().equals("admin")){ roles.add(user_role.getRole_name());//如果用户的角色是admin,再添加一个admin权限 } //3. 创建 SimpleAuthorizationInfo, 并设置其 roles 属性. SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles); //4. 返回 SimpleAuthorizationInfo 对象. return info; } 关于"ssm怎么实现视频的上传和播放"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
用户
文件
数据
信息
视频
数据库
路径
密码
对象
方法
登录
成功
权限
篇文章
角色
加密
实体
情况
数据表
文件名
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎么确认域服务器搭建成功
拆分数据库后端文件的扩展名
arcgis数据库锁
苹果软件开发工具要钱吗
串口服务器调试软件
大厂软件开发岗笔试选择题
华为会引起网络安全
百万级并发云服务器租金
市政府网络安全会议
易语言软件开发教程
软件开发部经理竞聘演讲
吉视传媒宽带网络安全密钥
北京数据库设计培训
绿色金融研究院数据库
yourcraft服务器
杭州安歌网络技术有限公司
浙江宁波联想塔式服务器
如何新作一个数据库
数据库索引 内存
数据库系统第五版第七章
串口服务器调试软件
确定网络安全
电脑版记账软件开发
互联网科技先生
衢州安全软件开发价格
雷石点歌机服务器软件破解
英雄血战在哪里找更换服务器
资阳跑腿app软件开发
信息网络安全与控制的关系
北京华品博睿网络技术是boss