ssm怎么实现视频的上传和播放
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章将为大家详细讲解有关ssm怎么实现视频的上传和播放,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。视频上传:@RequestMapping(value = "
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
戴尔服务器哪个系列是最新的
手机软件开发类经营项目
国内免费服务器
农民工转行数据库
网络安全产品运营职业规划
mssql++数据库+导出
深圳手机游戏软件开发
好轻如何删除数据库
计算机网络技术之父
吉林数据网络技术服务标准
空岛生存服务器怎么两人
美容管理系统软件开发
县级网络安全
河北万道网络技术
安信证券联通服务器
安徽使用软件开发要多少钱
关系数据库rs交差并运算
嵌入式软件开发单片机方向
怎么登录云服务器的秘钥
杀戮空间服务器无法添加地图
建立完善的网络安全技术体系
淮南市微视网络技术有限公司
服务器推介会策划方案
互联网医疗数码科技
哪个进销存商品录入有数据库
气象部门网络安全周
网络安全宣传主题班会动态
配置数据库还原数据库
旷视科技网络技术有限公司
cs退出服务器