服务端文件上传

需求

服务端在创建会议时需要上传文件以备开会使用,同样用springboot实现

实现

首先先创建所需的实体类FileDO

public class FileDO {
    int uid;
    String name;
    String address;
    int meetingId;
    public FileDO() {
    }

    public FileDO(String name, String address,int meetingId) {
        this.name = name;
        this.address = address;
        this.meetingId = meetingId;

再编写fileController来接受上传文件的请求

 @GetMapping("getFileList")
 Msg getFileList(@RequestParam int meetingId) {
     List<FileDO> files = fileService.getFileList(meetingId);
     if (files != null && files.size() > 0) {
         return new Msg(200, "success", files);
     } else {
         return new Msg(200, "文件不存在", null);
     }
 }
 @PostMapping("/upload")
 public Msg upload(@RequestParam MultipartFile file,@RequestParam("meetingId") int meetingId) {
     FileDO fileDO = fileService.uploadFile(file, meetingId);
     if (fileDO!=null) {
         return new Msg(200,"ok",fileDO);
     }
     return new Msg("上传失败");
 }
 @PostMapping("/delete")
 public Msg delete(@RequestParam int fileId){
     return new Msg(200,fileService.deleteFile(fileId),null);
 }

然后用fileService具体实现上传文件的操作

public FileDO uploadFile(MultipartFile file, int meetingId){
       FileDO fileDO = null;
       File dir = new File(ROOT_PATH+"/"+Integer.toString(meetingId));
       if(!dir.exists()){
          dir.mkdir();
       }
       try {
           File dest = new File(dir.getAbsoluteFile()+"/"+file.getOriginalFilename());
           if(!dest.exists()){
               dest.createNewFile();
           }
           file.transferTo(dest);
           fileDO = new FileDO(file.getOriginalFilename(),dest.getPath(),meetingId);
           fileDao.createFileRecord(fileDO);
       } catch (IOException e) {
           e.printStackTrace();
       }
       return fileDO;
   }
   public List<FileDO> getFileList(int meetingId){
       return fileDao.getFilesByMeetingId(meetingId);
   }
   public String deleteFile(int fileId) {
       return fileDao.deleteById(fileId)==1?"ok":"not exist";
   }

上传文件的流程为:首先创建一个文件路径,检测有无此文件夹,如果有便尝试上传,如果没有便新建一个文件夹,然后尝试上传,,若没有便新建一个此文件,在目录下新建一个文件,将客户端传入的文件数据写入,也会调用dao层,在数据库中添加该文件的记录。

public interface FileDao {
    int createFileRecord(FileDO fileDO);
    List<FileDO> getFilesByMeetingId(int meetingId);
    int deleteById(int fileId);
 <insert id="createFileRecord" parameterType="com.xhfron.paperless.bean.FileDO"
            keyProperty="uid" useGeneratedKeys="true">
        insert into `file`
        (`uid`, `name`, `address`, `meeting_id`)
        values(uid, #{name}, #{address}, #{meetingId})
    </insert>
    <select id="getFilesByMeetingId" resultType="com.xhfron.paperless.bean.FileDO">
        select * from file where `meeting_id` = #{meetingId}
    </select>
    <delete id="deleteById">
        delete from `file` where `uid` = #{fileId}

至此一个完整的上传文件功能便得以实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值