Browse Source

feature1.0.0-img:优化文件上传接口

master
chengkun 4 years ago
parent
commit
4e9264da7e
  1. 6
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/TikTokConfig.java
  2. 40
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java
  3. 7
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IQiniuService.java
  4. 11
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java
  5. 30
      bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/TikTokImageServiceImpl.java
  6. 2
      bnyer-services/bnyer-file/src/main/resources/bootstrap.yml

6
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/config/TikTokConfig.java

@ -24,4 +24,10 @@ public class TikTokConfig {
@Value("${tiktok.grant_type}") @Value("${tiktok.grant_type}")
private String grant_type; private String grant_type;
@Value("${tiktok.tokenUrl}")
private String tokenUrl;
@Value("${tiktok.checkImgUrl}")
private String checkImgUrl;
} }

40
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/controller/SysFileController.java

@ -1,13 +1,13 @@
package com.bnyer.file.controller; package com.bnyer.file.controller;
import com.alibaba.fastjson.JSONObject;
import com.bnyer.common.core.domain.R; import com.bnyer.common.core.domain.R;
import com.bnyer.file.service.IFileService; import com.bnyer.file.service.IFileService;
import com.bnyer.file.service.IQiniuService; import com.bnyer.file.service.IQiniuService;
import com.bnyer.file.service.ITikTokImage;
import com.bnyer.file.service.MinioService; import com.bnyer.file.service.MinioService;
import com.bnyer.file.utils.ImgUtil; import com.bnyer.file.utils.ImgUtil;
import com.bnyer.file.vo.TiktokImgVo; import com.bnyer.file.vo.TiktokImgVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -16,7 +16,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -26,6 +25,7 @@ import java.util.List;
* *
* @author ruoyi * @author ruoyi
*/ */
@Api(value = "文件上传接口",tags = "文件上传接口")
@RestController @RestController
@Slf4j @Slf4j
public class SysFileController { public class SysFileController {
@ -34,13 +34,12 @@ public class SysFileController {
@Autowired @Autowired
private IQiniuService qiniuService; private IQiniuService qiniuService;
@Autowired @Autowired
private ITikTokImage tikTokImage;
@Autowired
private IFileService fileService; private IFileService fileService;
/** /**
* 批量上传图片 * 批量上传图片
*/ */
@ApiOperation(value="批量上传到七牛云")
@PostMapping("/uploadBatch") @PostMapping("/uploadBatch")
public R<List<String>> uploadBatch(MultipartFile[] files) { public R<List<String>> uploadBatch(MultipartFile[] files) {
try { try {
@ -63,6 +62,7 @@ public class SysFileController {
* @return * @return
* @throws IOException * @throws IOException
*/ */
@ApiOperation(value="批量压缩上传到七牛云")
@PostMapping("/uploadBatchCompImg") @PostMapping("/uploadBatchCompImg")
public R<List<String>> compression(MultipartFile[] files) throws IOException { public R<List<String>> compression(MultipartFile[] files) throws IOException {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
@ -80,6 +80,7 @@ public class SysFileController {
/** /**
* 批量审核 * 批量审核
*/ */
@ApiOperation(value="批量图片审核")
@PostMapping("/checkBatch") @PostMapping("/checkBatch")
public R<List<TiktokImgVo>> checkBatch(ArrayList<MultipartFile> files) { public R<List<TiktokImgVo>> checkBatch(ArrayList<MultipartFile> files) {
try { try {
@ -91,34 +92,7 @@ public class SysFileController {
return R.fail("上传文件失败"); return R.fail("上传文件失败");
} }
} }
@ApiOperation(value="批量上传到minio")
@PostMapping("/upload")
@ResponseBody
public R upload(@RequestParam("file") MultipartFile file) {
String url = null;
try {
//url = minioService.uploadFile(file);
// url=qiniuService.userUpload(file);
String imageString = ImgUtil.getImageString(file);
//System.out.println(imageString);
//JSONObject jsonObject = qiniuService.checkImageContent("data:application/octet-stream;base64," + imageString);
System.out.println("=================================");
//System.out.println(jsonObject);
tikTokImage.checkImageContent(file);
} catch (Exception e) {
log.error("文件上传失败,原因为:【{}】", e.getMessage());
return R.fail("文件上传失败!");
}
return R.ok(url);
}
@PostMapping("/download")
@ResponseBody
public R download(@RequestParam("fileName") String fileName, HttpServletResponse response) {
minioService.download(fileName, response);
return R.ok();
}
@PostMapping("/uploadBanner") @PostMapping("/uploadBanner")
@ResponseBody @ResponseBody
public R uploadBanner(@RequestParam("file") MultipartFile file) { public R uploadBanner(@RequestParam("file") MultipartFile file) {

7
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/IQiniuService.java

@ -1,14 +1,17 @@
package com.bnyer.file.service; package com.bnyer.file.service;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
public interface IQiniuService { public interface IQiniuService {
String userUpload(MultipartFile file); String userUpload(MultipartFile file);
/**
* 检查图片内容是否符合规定
* @param imageUrl 图片的url地址或者图片Base64编码Base64编码请求时应在开头加上data:application/octet-stream;base64,
* @return JSONObject
*/
String checkImageContent(String imageUrl); String checkImageContent(String imageUrl);
/** /**

11
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/QiniuServiceImpl.java

@ -2,10 +2,8 @@ package com.bnyer.file.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.codec.Base64;
import com.bnyer.file.config.QiniuConfig; import com.bnyer.file.config.QiniuConfig;
import com.bnyer.file.service.IQiniuService; import com.bnyer.file.service.IQiniuService;
import com.bnyer.file.utils.ImgUtil;
import com.bnyer.file.utils.StringUtil; import com.bnyer.file.utils.StringUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException; import com.google.gson.JsonSyntaxException;
@ -22,8 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
@ -92,11 +88,7 @@ public class QiniuServiceImpl implements IQiniuService {
return "error"; return "error";
} }
/**
* 检查图片内容是否符合规定
* @param imageUrl 图片的url地址或者图片Base64编码Base64编码请求时应在开头加上data:application/octet-stream;base64,
* @return JSONObject
*/
@Override @Override
public String checkImageContent(String imageUrl) { public String checkImageContent(String imageUrl) {
//基础参数拼接 //基础参数拼接
@ -145,6 +137,7 @@ public class QiniuServiceImpl implements IQiniuService {
* @param multipartFiles * @param multipartFiles
* @return 格式正确的文件 * @return 格式正确的文件
*/ */
@Override
public ArrayList<MultipartFile> checkImageFormat(ArrayList<MultipartFile> multipartFiles){ public ArrayList<MultipartFile> checkImageFormat(ArrayList<MultipartFile> multipartFiles){
ArrayList<MultipartFile> afterCheckFiles = new ArrayList<>(); ArrayList<MultipartFile> afterCheckFiles = new ArrayList<>();
for (MultipartFile multipartFile : multipartFiles) { for (MultipartFile multipartFile : multipartFiles) {

30
bnyer-services/bnyer-file/src/main/java/com/bnyer/file/service/impl/TikTokImageServiceImpl.java

@ -3,34 +3,14 @@ package com.bnyer.file.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.codec.Base64;
import com.bnyer.file.config.TikTokConfig; import com.bnyer.file.config.TikTokConfig;
import com.bnyer.file.service.IQiniuService;
import com.bnyer.file.service.ITikTokImage; import com.bnyer.file.service.ITikTokImage;
import com.bnyer.file.utils.HttpUtils; import com.bnyer.file.utils.HttpUtils;
import com.bnyer.file.utils.ImgUtil; import com.bnyer.file.utils.ImgUtil;
import com.bnyer.file.utils.StringUtil;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Client;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import com.qiniu.util.StringMap;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
/** /**
@ -43,12 +23,6 @@ public class TikTokImageServiceImpl implements ITikTokImage {
@Autowired @Autowired
private TikTokConfig tikTokConfig; private TikTokConfig tikTokConfig;
private String getTokenUrl="https://developer.toutiao.com/api/apps/v2/token";
private String checkImgUrl="https://developer.toutiao.com/api/apps/censor/image";
public static void main(String[] args) {
}
@Override @Override
public Boolean checkImageContent(MultipartFile file) { public Boolean checkImageContent(MultipartFile file) {
String token=""; String token="";
@ -57,7 +31,7 @@ public class TikTokImageServiceImpl implements ITikTokImage {
param.put("secret", tikTokConfig.getSecret()); param.put("secret", tikTokConfig.getSecret());
param.put("grant_type", tikTokConfig.getGrant_type()); param.put("grant_type", tikTokConfig.getGrant_type());
String body = JSON.toJSONString(param); String body = JSON.toJSONString(param);
String res = HttpUtils.sendPost(getTokenUrl, body); String res = HttpUtils.sendPost(tikTokConfig.getTokenUrl(), body);
String err_tips = JSON.parseObject(res).get("err_tips").toString(); String err_tips = JSON.parseObject(res).get("err_tips").toString();
if (err_tips.equals("success")){ if (err_tips.equals("success")){
res=JSON.parseObject(res).get("data").toString(); res=JSON.parseObject(res).get("data").toString();
@ -69,7 +43,7 @@ public class TikTokImageServiceImpl implements ITikTokImage {
checkParam.put("access_token", token); checkParam.put("access_token", token);
checkParam.put("image_data", ImgUtil.getImageString(file)); checkParam.put("image_data", ImgUtil.getImageString(file));
String checkBody = JSON.toJSONString(checkParam); String checkBody = JSON.toJSONString(checkParam);
String checkRes = HttpUtils.sendPost(checkImgUrl, checkBody); String checkRes = HttpUtils.sendPost(tikTokConfig.getCheckImgUrl(), checkBody);
JSONObject jsonObject = JSON.parseObject(checkRes); JSONObject jsonObject = JSON.parseObject(checkRes);
JSONArray predicts = JSON.parseArray(jsonObject.get("predicts").toString()); JSONArray predicts = JSON.parseArray(jsonObject.get("predicts").toString());
for (Object predict : predicts) { for (Object predict : predicts) {

2
bnyer-services/bnyer-file/src/main/resources/bootstrap.yml

@ -12,7 +12,7 @@ spring:
name: bnyer-file name: bnyer-file
profiles: profiles:
# 环境配置 # 环境配置
active: prod active: dev
servlet: servlet:
multipart: multipart:
maxFileSize: 5MB maxFileSize: 5MB

Loading…
Cancel
Save