基于SpringBoot的online_music_player(上传音乐模块_1)

80 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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验证

  • 未登录上传文件

image-20220728220551808

  • 登入后上传

image-20220728222451783

image-20220728221805447

可以看到我们设置的服务器目录下就含有了该上传的音乐文件!