package com.kidgrow.filecenter.controller;
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.Result;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.filecenter.model.FileInfo;
import com.kidgrow.filecenter.service.IFileService;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
*
* @Description: 文件上传
* @Project:
* @CreateDate: Created in 2020/2/18 11:41
* @Author: liuke
*/
@RestController
public class FileController {
@Resource
private IFileService fileService;
/**
* 文件上传
* 根据fileType选择上传方式
*
* @param file
* @return
* @throws Exception
*/
@PostMapping(value="/files-anon",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public FileInfo upload(@RequestParam("file") MultipartFile file) throws Exception {
return fileService.upload(file);
}
/**
* 文件上传
* 根据fileType选择上传方式
*
* @param file
* @return
* @throws Exception
*/
@PostMapping(value="/files-upload",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public FileInfo feignUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) throws Exception {
return fileService.upload(file,imgType);
}
/**
* 文件上传 返回带缩略图地址的对象,缩略图在path字段
*
* @param file
* @return
* @throws Exception
*/
@PostMapping(value="/files-thupload",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public FileInfo thUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) throws Exception {
return fileService.uploadForThumbnails(file,imgType);
}
/**
* 文件上传 根据fileType选择上传方式 hospitalId departmentId
* @param file
* @return
*/
@PostMapping(value="/feignUploadHosIdAndDepId",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public FileInfo feignUploadHosIdAndDepId(@RequestPart("file") MultipartFile file,@RequestParam("imgType") String imgType,@RequestParam("hospitalId") String hospitalId,@RequestParam("departmentId") String departmentId) throws Exception {
return fileService.feignUploadHosIdAndDepId(file,imgType,hospitalId,departmentId);
}
/**
* base64上传图片
*/
@PostMapping(value="baseUplaod",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public FileInfo baseUplaod(@RequestParam("file") String file,@RequestParam("imgType") String imgType,
@RequestParam("hospitalId") String hospitalId,@RequestParam("departmentId") String departmentId){
return fileService.baseUplaod(file,imgType,hospitalId,departmentId);
}
/**
* base64图片下载
*/
@PostMapping(value="baseDownLoad")
public ResultBody baseDownLoad(@RequestBody Map map) throws Exception{
String url = MapUtils.getString(map, "url");
if (StringUtils.isBlank(url)) {
return ResultBody.failed("请输入地址");
}
return fileService.baseDownLoad(map);
}
/**
* byte[]上传
*/
@PostMapping(value="byteUplaod")
public FileInfo byteUplaod(@RequestParam("fileName") String fileName,@RequestBody byte[] bytes) throws IOException{
if(bytes.length == 0){
return null;
}
if (com.kidgrow.common.utils.StringUtils.isBlank(fileName)) {
return null;
}
InputStream inputStream = new ByteArrayInputStream(bytes);
return fileService.byteUplaod(fileName,inputStream,bytes.length);
}
/**
* byte[]上传
*/
@PostMapping(value="byteUplaodTest",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public FileInfo byteUplaodTest(@RequestParam("fileName") String fileName,@RequestPart("file") MultipartFile file)throws IOException {
InputStream inputStream = file.getInputStream();
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int ch;
/**
*
* */
while ((ch = inputStream.read(buffer)) != -1) {
bytestream.write(buffer,0,ch);
}
byte[] data = bytestream.toByteArray();
InputStream inputStream1 = new ByteArrayInputStream(data);
return fileService.byteUplaod(fileName,inputStream,data.length);
}
/**
* 文件删除
*
* @param id
*/
@DeleteMapping("/files/{id}")
public Result delete(@PathVariable String id) {
try {
fileService.delete(id);
return Result.succeed("操作成功");
} catch (Exception ex) {
return Result.failed("操作失败");
}
}
/**
* 文件查询
*
* @param params
* @return
*/
@GetMapping("/files")
public PageResult findFiles(@RequestParam Map params) {
return fileService.findList(params);
}
}