项目7-音乐播放器3(删除模块+播放音乐模块设计)

embedded/2024/10/18 1:34:49/

1.播放音乐模块设计

1.1 请求响应设计

请求:
{
        get,
        /music/get?path=xxx.mp3
}
响应:
{
        音乐数据本身的字节信息
}

1.2 后端代码 

1. Files.readAllBytes(String path) : 读取文件中的所有字节,读入内存 ,参数path是文件的路径

1.3 后端测试 

后续经检查,上面返回的是错误的,应当是下面这样

1.3.1 测试请求是否收到对应响应

根据上述请求获取一个音乐文件:

可以明显看到有TAG标签
获取一个图片伪造的mp3文件:没有TAG标签 

1.4 前后端交互

1.4.1 播放音乐

  • 这里播放歌曲,我们采用开源的播放控件:
  • 码云地址:https://gitee.com/jackzhang1204/sewise-player
  • GitHub地址:https://github.com/jackzhang1204/sewise-player
  • 最后无法播放
  • 经检查是由于url存放失误

1.4.2 url的问题(重点)

在mysql存放的url有问题

1.4.3 前端代码的问题 

//3.播放音乐@RequestMapping("/get")public ResponseEntity<byte[]> get(String musicTitle){String fullpath=Constant.SAVE_PATH+musicTitle;File file = new File(fullpath);byte[] bytes = new byte[0];byte[] a = null;try {a = Files.readAllBytes(file.toPath());if(a == null) {return ResponseEntity.badRequest().build();}return ResponseEntity.ok(a);} catch (IOException e) {e.printStackTrace();}return ResponseEntity.badRequest().build();}

1.4.4 后端代码

<!-- 嵌入播放器 -->

<div style="width: 180px; height: 140px; position:absolute; bottom:10px; right:10px">

    <script type="text/javascript" src="player/sewise.player.min.js"></script>

    <script type="text/javascript">

            SewisePlayer.setup({

                server: "vod",

                type: "mp3",

                //这里是默认的一个网址

                videourl:"http://jackzhang1204.github.io/materials/where_did_time_go.mp3",

                skin: "vodWhite",

                //这里需要设置false

                autostart:"false",

            });

    </script>

</div>

 写该函数的操作

2. 删除音乐模块设计(删除一个文件)

删除操作,用动态sql做

请求:
{
post,
/music/delete,
id
}
响应:
{
"status": 0,
"message": "删除成功!",
"data": true
}

//1.文件的删除

//2.sql库的删除 

2.1 后端代码

MAPPER

SERVICE

controller 

2.2 后端接口测试 

测试成功!!!

2.3 前后端交互

 function deleteInfo(obj){$.ajax({url: "/music/singleDelete",type: "post",data: {"musicId": obj},success: function(result){if(result!=null&result.data!=null&result.status==200){alert("删除音乐文件成功");location.href="list.html";}else{alert("删除文件失败!!!")}},error: function(error){if(error!=null&&error.status==401){alert("请登录用户");location.href = "login.html";}}});}

2.4 前端测试

 

测试成功!!! 

3.批量删除

3.1 后端代码

mapper

对应的xml

 

service

 

controller

3.2 后端测试

1.什么也不删除

2.删除的id找不到

3.删除多个文件 

测试成功!!!

3.3.需要注意的地方

3.4 前端代码

$.when(load).done(function () {$("#delete").click(function(){var i=0;var musicId=[];// var ids=[];// $("input:checkbox[name='selectBook']:checked").each(function () {//     ids.push($(this).val());//像数组添加元素// });// var idstr=ids.join(',');//将数组元素连接起来以构建一个字符串 // console.idstr;$("input:checkbox").each(function(){//如果被选中,this代表发生事件的dom元素,<input>//获取框内的idif( $(this).is(":checked")) {// //1.musicId[i] = $(this).attr("id");//整型形式//2.// musicIdString = $(this).attr("id");//整型形式// musicId[i]=parseInt(musicIdString);i++;}});console.log(musicId);$.ajax({type: "get",// url: "music/delete?ids="+idstr,url: "music/delete",data:{"ids": musicId},// contentType: "application/json",dataType: "json",  success: function(result){console.log(result);if(result!=null&result.data!=null&result.status==200){alert("删除音乐文件成功");location.href="list.html";}else{alert("删除音乐文件失败");}return;},error: function(error){if(error!=null&&error.status==401){alert("请登录用户");location.href = "login.html";}else{alert(JSON.stringify(error));location.href = "list.html";}}});})


http://www.ppmy.cn/embedded/4047.html

相关文章

11:HAL--定时器代码总结

下面文章没有提定时器的都默认为通用定时器&#xff0c;提了的为高级定时器 如果没有使用HAL_TIM_ConfigClockSource&#xff08;&#xff09;函数来配置时钟源的话默认为&#xff0c;使用内部时钟源来触发CNT计数器。 通道1必须使用---TI1FP1&#xff1b;通道2必须使用TI2FP2&…

面试:lock 和 synchronized

一、语法层面 synchronized 是关键字&#xff0c;源码在jvm中&#xff0c;用c语言实现Lock 是接口&#xff0c;源码由jdk提供&#xff0c;用java语言实现使用synchronized时&#xff0c;退出同步代码块锁会自动释放&#xff0c;而使用Lock时&#xff0c;需要手动调用unlock方法…

(二十)C++自制植物大战僵尸游戏僵尸进攻控制实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 文件位置 实现功能的代码文件位置在Class\Scenes\GameScene文件夹中&#xff0c;具体如下图所示。 ZombiesAppearControl.h /* 僵尸出现波数控制 */ class ZombiesAppearControl { public:/***对于进攻的不同波数…

Elasticsearch:如何将 MongoDB 数据引入 Elastic Cloud

作者&#xff1a;Hemendra Singh Lodhi Elastic Cloud 是由 Elastic 提供的基于云的托管服务。Elastic Cloud 允许客户在亚马逊网络服务 (AWS)、谷歌云平台 (GCP) 和微软 Azure 上部署、管理和扩展他们的 Elasticsearch 集群。 MongoDB 是一种流行的 NoSQL 文档导向数据库&am…

写一个uniapp的登录注册页面

目录 一、效果图 二、代码 1、登录 &#xff08;1&#xff09;页面布局代码 &#xff08;2&#xff09;逻辑实现代码 &#xff08;3&#xff09;css样式 2、注册 &#xff08;1&#xff09;页面布局代码 &#xff08;2&#xff09;逻辑实现代码 &#xff08;3&#x…

美国家安全局等发布安全部署人工智能系统指南

该指南旨在为部署和运行由其他实体设计和开发的人工智能系统的组织提供最佳实践。 2024年4月15日&#xff0c;美国国家安全局发布了名为《安全部署人工智能系统&#xff1a;部署安全、弹性人工智能系统的最佳实践》&#xff0c;该指南旨在为部署和运行由其他实体设计和开发的人…

蓝桥杯-单片机组基础21——第15届省赛代码

目录 0.比赛题目回忆 1. 底层头文件 2.底层文件 3.主函数文件 做下来感觉&#xff0c;主观题第15届比14届稍微简单一些&#xff0c;但是出其不意考了DAC 本届客观题有点难&#xff0c;做选择感觉把握性不大&#xff0c;多选比较多 万幸比赛前一天做出了第14届的题&#x…

03-JAVA设计模式-中介者模式

中介者模式 什么是中介者模式 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;用于减少对象之间的直接依赖关系&#xff0c;降低它们之间的耦合度&#xff0c;并使得一个对象改变时&#xff0c;所有依赖于它的对象都得到通知并自动更新。…