携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
上传音乐模块
上传音乐模块设计
上传音乐请求和响应
请求:
{
post,
url:music/upload
data:{singer,MultipartFile file} //上传音乐的歌手名和音乐文件
}
响应:
{
status:0,//0表示成功,-1失败!
message:"响应信息",
data:true //true表示成功
}
Music类
package com.example.onlinemusic.model;
import lombok.Data;
/**
* Created with IntelliJ IDEA.
* Description:Music实体类
* User: hold on
* Date: 2022-07-27
* Time: 15:37
*/
@Data
public class Music {
private int id;
private String title;
private String singer;
private String time;
private String url;
private int user_id;
}
MusicController类
这里MusicController类中的上传方法,需要处理2部分内容
- 将音乐文件上传到服务器下
- 将上传的音乐信息上传到数据库中
上传到服务器
package com.example.onlinemusic.controller;
import com.example.onlinemusic.model.Contant;
import com.example.onlinemusic.tools.ResponseBodyMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import sun.util.logging.resources.logging;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
/**
* Created with IntelliJ IDEA.
* Description:
* User: hold on
* Date: 2022-07-27
* Time: 15:40
*/
@RestController
@RequestMapping("/music")
public class MusicController {
// //文件上传服务器后的路径地址!
// public static final String SAVE_PATH = "D:/uploadmusicfile/";
//我们可以将该路径信息设置到配置文件中!
@Value("${music.path.save}")
private String SAVE_PATH;
//这里的上传需要将音乐上传到服务器,还有就是需要将音乐信息上传到数据库!
@RequestMapping("/upload")
public ResponseBodyMessage<Boolean> UploadMusic(String singer,
MultipartFile file,
HttpServletRequest request){
//1.上传音乐前验证登入状态,如果未登入就不创建会话
//如果用户已登入,则允许上传音乐!
HttpSession session = request.getSession(false);
if(session==null||session.getAttribute(Contant.USERINFO_SESSION_KEY)==null){
//未登入状态!
System.out.println("未登入");
return new ResponseBodyMessage<>(-1,"未登录,请登录后上传!",false);
}
//2.登入状态,可以将歌曲上传到服务器!
//获取到音乐文件名 xxx.mp4
String musicname = file.getOriginalFilename();
System.out.println("musicfileAndtype:"+musicname);
//上传文件在服务器下保存的路径!
String path = SAVE_PATH + musicname;
//创建文件对象
File desc = new File(path);
//该文件目录在磁盘中不存在,就创建该目录
if(!desc.exists()){
desc.mkdir();
}
//将音乐文件上传到该目录下!
try {
file.transferTo(desc);
} catch (IOException e) {
e.printStackTrace();
//上传失败
return new ResponseBodyMessage<>(-1,"上传失败",false);
}
//上传成功
return new ResponseBodyMessage<>(0,"上传成功",true);
}
}
postman验证
- 未登录上传文件
- 登入后上传
可以看到我们设置的服务器目录下就含有了该上传的音乐文件!