OssUploadController.java 5.11 KB
package com.lhcredit.common.utils.oss;

import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/oss")
public class OssUploadController {
    public static String token="d5a67262-9059-998e-9e8b-89ddef8df357";


    @PostMapping(value = "/import", headers = "content-type=multipart/form-data")
    public Object importExcel(HttpServletRequest request, HttpServletResponse response) {
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        commonsMultipartResolver.setDefaultEncoding("utf-8");
        if (commonsMultipartResolver.isMultipart(request)){
            MultipartHttpServletRequest mulReq = (MultipartHttpServletRequest) request;

            Map<String, MultipartFile> map = mulReq.getFileMap();
            // fileParamName
            MultipartFile multiFile = map.get("file");
            System.out.println("文件:"+(null==multiFile));
            System.out.println("fileName:"+(null!=multiFile?multiFile.getOriginalFilename():null));
            System.out.println("fileSize:"+(null!=multiFile?multiFile.getSize():null));
        }
        return null;
    }

    /**
     *
     * @param file
     * @param noRestrict   是否无限制 "jpg","png","pdf","doc","txt","docx","xlsx","xls","ppt"
     * @param useOriginalFilename  使用文件原名称
     * @return
     */
    @RequestMapping("standardAnnax")
    public Object standardAnnax(MultipartFile file,Boolean noRestrict,Boolean useOriginalFilename) {
        validToken();
        noRestrict= null!=noRestrict?noRestrict:false;
        useOriginalFilename= null!=useOriginalFilename?useOriginalFilename:false;
        System.out.println("文件:"+(null==file));
        System.out.println("fileName:"+(null!=file?file.getOriginalFilename():null));
        System.out.println("fileSize:"+(null!=file?file.getSize():null));
        OssUploadResult upload = OssUploadResult.of(file,useOriginalFilename,noRestrict).media().upload();
        return upload;
    }
    public static void main(String[] args) {

    }
    /**
     * 通用OSS下载请求
     */
    @RequestMapping("ossDownload")
    @ResponseBody
    public void ossDownload(String fileName, HttpServletResponse response) {
        validToken();
        ServletOutputStream outputStream =null;
        InputStream inputStream =null;
        try {
             inputStream = OssService.downloadFile(fileName);
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            // 写出
            outputStream= response.getOutputStream();
            byte[] b = new byte[100];
            int len;
            try {
                while ((len = inputStream.read(b)) > 0)
                    response.getOutputStream().write(b, 0, len);
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                inputStream.close();
                outputStream.close();
            }
        } catch (Exception e) {

        }
    }

    /**
     * 通用OSS删除文件请求
     */
    @RequestMapping("common/ossDelete")
    public void ossDelete(String fileName) {
        validToken();
        OssService.deleteFile(fileName);
    }

    public static ServletRequestAttributes getRequestAttributes() {
        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
        return (ServletRequestAttributes) attributes;
    }
    public static void validToken(){
        String token = getRequestAttributes().getRequest().getHeader("token");
        System.out.println("进行token验证"+token);
        if (StringUtils.isEmpty(token)||!token.equals(getToken())){
            throw new RuntimeException("token验证失败");
        }
        System.out.println("验证成功");
    }
    public static String getToken(){
        Date date=new Date();
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = format.format(date);
        return "d5a672629059998e9e8b_"+AESUtis.encrypt(dateStr);
    }
}