PicUploadController.java 4.43 KB
Newer Older
liqin's avatar
liqin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
package cn.wisenergy.chnmuseum.party.web.controller;

import cn.wisenergy.chnmuseum.party.common.dfs.FastDFSUtils;
import cn.wisenergy.chnmuseum.party.common.vo.PicUploadResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * 图片上传
 */
@RestController
@RequestMapping("/pic")
public class PicUploadController {

    private static final Logger log = LoggerFactory.getLogger(PicUploadController.class);
    @Value("${IMAGE_BASE_URL}")
    private String IMAGE_BASE_URL;

    // 允许上传的格式
liqin's avatar
liqin committed
30
    private static final String[] IMAGE_TYPE = new String[]{".bmp", ".jpg", ".jpeg", ".png"};
liqin's avatar
liqin committed
31

liqin's avatar
liqin committed
32 33 34 35
//    @RequestMapping(value = "/upload", method = RequestMethod.POST)
//    public ResponseEntity<PicUploadResult> upload(@RequestParam(value = "bc_cover", required = true) MultipartFile uploadFile, HttpServletResponse response) throws Exception {
//        // 校验文件扩展名
//        boolean isLegal = false;
liqin's avatar
liqin committed
36 37 38 39 40 41
//        for (String type : IMAGE_TYPE) {
//            if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) {
//                isLegal = true;
//                break;
//            }
//        }
liqin's avatar
liqin committed
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
//        byte[] bytes = uploadFile.getBytes();
//        if (ImageUtil.isPicture(uploadFile.getOriginalFilename()) && ImageUtil.isImage(bytes) && ImageUtil.isImage1(bytes)) {
//            isLegal = true;
//        } else {
//            isLegal = false;
//            throw new RuntimeException("图片文件不合法");
//        }
//
//        // 封装Result对象,并且将文件的byte数组放置到result对象中
//        PicUploadResult fileUploadResult = new PicUploadResult();
//        // 状态
//        fileUploadResult.setError(isLegal ? 0 : 1);
//        // 文件新路径
//        String filePath = FastDFSUtils.uploadPic(bytes, uploadFile.getOriginalFilename(), uploadFile.getSize());
//
//        if (log.isDebugEnabled()) {
//            log.debug("Pic file upload .[{}] to [{}] .", uploadFile.getOriginalFilename(), filePath);
//        }
//        String picUrl = IMAGE_BASE_URL + filePath;
liqin's avatar
liqin committed
61 62 63 64 65 66 67 68 69 70 71 72 73 74
//        fileUploadResult.setUrl(picUrl);
//        isLegal = false;
//        try {
//            BufferedImage image = ImageIO.read(new URL(picUrl));
//            if (image != null) {
//                // fileUploadResult.setWidth(image.getWidth() + "");
//                // fileUploadResult.setHeight(image.getHeight() + "");
//                isLegal = true;
//            }
//        } catch (IOException e) {
//            log.error("check image is legal error! " + e.getMessage());
//        }
//        isLegal = true;
//        fileUploadResult.setError(isLegal ? 0 : 1);
liqin's avatar
liqin committed
75 76 77 78 79 80
//        if (!isLegal) {
//            // 不合法,将磁盘上的文件删除
//            FastDFSUtils.deletePic(picUrl);
//        }
//        return ResponseEntity.status(HttpStatus.CREATED).body(fileUploadResult);
//    }
liqin's avatar
liqin committed
81

liqin's avatar
liqin committed
82 83
    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public ResponseEntity<PicUploadResult> uploadFile(@RequestParam(value = "cover") MultipartFile uploadFile, HttpServletResponse response) throws Exception {
liqin's avatar
liqin committed
84 85
        // 封装Result对象,并且将文件的byte数组放置到result对象中
        PicUploadResult fileUploadResult = new PicUploadResult();
liqin's avatar
liqin committed
86
        if (uploadFile.getSize() / (1024 * 1024) > 1024) {
liqin's avatar
liqin committed
87
            //50兆
liqin's avatar
liqin committed
88
            log.error("附件大小超过50兆!请重新上传 ");
liqin's avatar
liqin committed
89
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
liqin's avatar
liqin committed
90 91
        }
        ;
liqin's avatar
liqin committed
92 93 94 95 96 97 98 99 100 101 102 103
        // 文件新路径
        String filePath = FastDFSUtils.uploadPic(uploadFile.getBytes(), uploadFile.getOriginalFilename(),
                uploadFile.getSize());
        if (log.isDebugEnabled()) {
            log.debug("Pic file upload .[{}] to [{}] .", uploadFile.getOriginalFilename(), filePath);
        }
        String picUrl = IMAGE_BASE_URL + filePath;
        fileUploadResult.setUrl(picUrl);
        return ResponseEntity.status(HttpStatus.CREATED).body(fileUploadResult);
    }

}