content: package com.controller;
  
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.IOException;
  import java.util.Arrays;
  import java.util.Date;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  import java.util.Random;
  import java.util.UUID;
  
  import org.apache.commons.io.FileUtils;
  import org.apache.commons.lang3.StringUtils;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.http.HttpHeaders;
  import org.springframework.http.HttpStatus;
  import org.springframework.http.MediaType;
  import org.springframework.http.ResponseEntity;
  import org.springframework.util.ResourceUtils;
  import org.springframework.web.bind.annotation.PathVariable;
  import org.springframework.web.bind.annotation.RequestBody;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestParam;
  import org.springframework.web.bind.annotation.RestController;
  import org.springframework.web.multipart.MultipartFile;
  
  import com.annotation.IgnoreAuth;
  import com.baomidou.mybatisplus.mapper.EntityWrapper;
  import com.entity.ConfigEntity;
  import com.entity.EIException;
  import com.service.ConfigService;
  import com.utils.R;
  
  /**
   * 上传文件映射表
   */
  @RestController
  @RequestMapping("file")
  @SuppressWarnings({"unchecked","rawtypes"})
  public class FileController{
  	@Autowired
      private ConfigService configService;
  	/**
  	 * 上传文件
  	 */
  	@RequestMapping("/upload")
  	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
  		if (file.isEmpty()) {
  			throw new EIException("上传文件不能为空");
  		}
  		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
  		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
  		if(!path.exists()) {
  		    path = new File("");
  		}
  		File upload = new File(path.getAbsolutePath(),"/src/main/resources/static/upload/");
  		if(!upload.exists()) {
  		    upload.mkdirs();
  		}
  		String fileName = new Date().getTime()+"."+fileExt;
  		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
  		file.transferTo(dest);
  		if(StringUtils.isNotBlank(type) && type.equals("1")) {
  			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
  			if(configEntity==null) {
  				configEntity = new ConfigEntity();
  				configEntity.setName("faceFile");
  				configEntity.setValue(fileName);
  			} else {
  				configEntity.setValue(fileName);
  			}
  			configService.insertOrUpdate(configEntity);
  		}
  		return R.ok().put("file", fileName);
  	}
  	
  	/**
  	 * 下载文件
  	 */
  	@IgnoreAuth
  	@RequestMapping("/download")
  	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
  		try {
  			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
  			if(!path.exists()) {
  			    path = new File("");
  			}
  			File upload = new File(path.getAbsolutePath(),"/src/main/resources/static/upload/");
  			if(!upload.exists()) {
  			    upload.mkdirs();
  			}
  			File file = new File(upload.getAbsolutePath()+"/"+fileName);
  			if(file.exists()){
  				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
  					getResponse().sendError(403);
  				}*/
  				HttpHeaders headers = new HttpHeaders();
  			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
  			    headers.setContentDispositionFormData("attachment", fileName);    
  			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
  			}
  		} catch (IOException e) {
  			e.printStackTrace();
  		}
  		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
  	}
  	
  }
  