FileController.java 3.42 KB
package vion.controller;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import vion.Global;
import vion.enums.ResultEnum;
import vion.model.File;
import vion.service.IFileSerrvice;
import vion.utils.ResultUtil;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping(Global.BASE_URL)
@Slf4j
public class FileController {

    @Autowired
    private IFileSerrvice fileSerrvice;


    @Value("${fileurl:}")
    private String fileurl;

    @GetMapping("/files")
    @ResponseBody
    public Object getAccountList(@RequestParam(name = "store_id")Integer store_id,
                                 @RequestParam(name = "source_id")Integer source_id,
                                 @RequestParam(name = "pageNum")Integer pageNum,
                                 @RequestParam(name = "pageSize")Integer pageSize){
        //pageNum当前页,pageSize每页条数
        PageHelper.startPage(pageNum,pageSize);
        List<File> fileList=fileSerrvice.list(Wrappers.<File>lambdaQuery()
                .eq(File::getSourceId,source_id)
                .eq(File::getStoreId,store_id));
        PageInfo pageInfo=new PageInfo(fileList,10);

        if (pageInfo != null) {
            return ResultUtil.success(pageInfo);
        } else {
            return ResultUtil.error(ResultEnum.SELECT_ERROR);
        }
    }

    @PostMapping("/upLoadFile")
    public Map<String, Object> uploadFile(@RequestParam(name="file") MultipartFile file){
        Map<String, Object> resultMap = new HashMap<String, Object>();
        try {
            //上传url地址
            String path=fileurl+"/"+file.getOriginalFilename();
            java.io.File fileinfo=new java.io.File(path);

            file.transferTo(fileinfo);

            resultMap.put("msg_code", "200");
        } catch (IOException e) {
            e.printStackTrace();
            resultMap.put("msg_code", "500");
        }
        return resultMap;
    }

    @GetMapping("/downLoadFile")
    public void downLoadFile(@RequestParam(name="fileurl")String fileurl,
                         @RequestParam(name="filename")String filename,
                         HttpServletResponse response){
        Map<String, Object> resultMap = new HashMap<String, Object>();
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition","attachment;filename="+filename);
        java.io.File file=new java.io.File(fileurl);
        try {
            FileInputStream fis=new FileInputStream(file);
            OutputStream os=response.getOutputStream();
            byte[] buffer=new byte[1024];
            int length;
            while((length=fis.read(buffer))>0){
                os.write(buffer,0,length);
            }

            fis.close();
            os.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}