添加图片文件Base64格式接口功能

main
zhangyue 2026-04-14 17:17:46 +08:00
parent 5381c299e6
commit 97d23b58eb
6 changed files with 92 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import com.zcloud.basic.info.dto.ImgFilesPageQry;
import com.zcloud.basic.info.dto.ImgFilesQryCmd;
import com.zcloud.basic.info.dto.ImgFilesUpdateCmd;
import com.zcloud.basic.info.dto.clientobject.ImgFilesCO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesBase64CO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesInfoCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -93,5 +94,11 @@ public class ImgFilesController {
public SingleResponse<String> getImagePath() {
return SingleResponse.of(imgFilesService.getImagePath());
}
@ApiOperation("所有数据(base64格式)")
@GetMapping("/listAllBase64")
public MultiResponse<ImgFilesBase64CO> listAllBase64(ImgFilesQryCmd imgFilesQryCmd) {
return imgFilesService.listAllBase64(imgFilesQryCmd);
}
}

View File

@ -1,6 +1,7 @@
package com.zcloud.basic.info.command.convertor;
import com.zcloud.basic.info.domain.model.ImgFilesE;
import com.zcloud.basic.info.dto.clientobject.ImgFilesBase64CO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesCO;
import com.zcloud.basic.info.persistence.dataobject.ImgFilesDO;
import com.zcloud.gbscommon.zcloudimgfiles.response.ZcloudImgFilesCO;
@ -27,5 +28,7 @@ public interface ImgFilesCoConvertor {
List<ZcloudImgFilesCO> converCOsToDubboCOs(List<ImgFilesCO> imgFilesCOs);
List<ImgFilesBase64CO> converDOsToBase64COs(List<ImgFilesDO> imgFilesDOs);
}

View File

@ -9,15 +9,24 @@ import com.zcloud.basic.info.dto.ImgFilesAddCmd;
import com.zcloud.basic.info.dto.ImgFilesPageQry;
import com.zcloud.basic.info.dto.ImgFilesQryCmd;
import com.zcloud.basic.info.dto.clientobject.ImgFilesCO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesBase64CO;
import com.zcloud.basic.info.persistence.dataobject.ImgFilesDO;
import com.zcloud.basic.info.persistence.repository.ImgFilesRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import org.apache.commons.io.FileUtils;
import org.springframework.util.Base64Utils;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.io.IOUtils;
@ -63,5 +72,46 @@ public class ImgFilesQueryExe {
public String getImagePath() {
return imageConfig.getUrl();
}
public MultiResponse<ImgFilesBase64CO> executeListBase64(ImgFilesQryCmd imgFilesQryCmd) {
Map<String,Object> params = PageQueryHelper.toHashMap(imgFilesQryCmd);
List<ImgFilesDO> imgFilesDOList = imgFilesRepository.listAll(params);
// 先转换为ImgFilesCO以保留原有字段
List<ImgFilesBase64CO> imgFilesCOList = imgFilesCoConvertor.converDOsToBase64COs(imgFilesDOList);
List<ImgFilesBase64CO> resultList = new ArrayList<>();
for (ImgFilesBase64CO base64CO : imgFilesCOList) {
// 设置MIME类型
String fileName = base64CO.getFileName();
String mimeType = URLConnection.guessContentTypeFromName(fileName);
if (mimeType == null) {
// 默认MIME类型
mimeType = "application/octet-stream";
}
base64CO.setMimeType(mimeType);
try {
// 读取文件内容并转换为base64
String fileUrl = imageConfig.getUrl() + base64CO.getFilePath();
System.out.println(fileUrl);
// 使用URL类读取远程文件
URL url = new URL(fileUrl);
try (InputStream inputStream = url.openStream()) {
byte[] fileContent = IOUtils.toByteArray(inputStream);
String base64Content = Base64Utils.encodeToString(fileContent);
base64CO.setBase64(base64Content);
resultList.add(base64CO);
}
} catch (Exception e) {
// 处理文件读取异常
e.printStackTrace();
}
}
return MultiResponse.of(resultList);
}
}

View File

@ -13,6 +13,7 @@ import com.zcloud.basic.info.dto.ImgFilesPageQry;
import com.zcloud.basic.info.dto.ImgFilesQryCmd;
import com.zcloud.basic.info.dto.ImgFilesUpdateCmd;
import com.zcloud.basic.info.dto.clientobject.ImgFilesCO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesBase64CO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesInfoCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -78,5 +79,10 @@ public class ImgFilesServiceImpl implements ImgFilesServiceI {
public String getImagePath() {
return imgFilesQueryExe.getImagePath();
}
@Override
public MultiResponse<ImgFilesBase64CO> listAllBase64(ImgFilesQryCmd imgFilesQryCmd) {
return imgFilesQueryExe.executeListBase64(imgFilesQryCmd);
}
}

View File

@ -8,6 +8,7 @@ import com.zcloud.basic.info.dto.ImgFilesPageQry;
import com.zcloud.basic.info.dto.ImgFilesQryCmd;
import com.zcloud.basic.info.dto.ImgFilesUpdateCmd;
import com.zcloud.basic.info.dto.clientobject.ImgFilesCO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesBase64CO;
import com.zcloud.basic.info.dto.clientobject.ImgFilesInfoCO;
import java.util.Map;
@ -34,5 +35,7 @@ public interface ImgFilesServiceI {
MultiResponse<ImgFilesCO> listAll(ImgFilesQryCmd imgFilesQryCmd);
String getImagePath();
MultiResponse<ImgFilesBase64CO> listAllBase64(ImgFilesQryCmd imgFilesQryCmd);
}

View File

@ -0,0 +1,23 @@
package com.zcloud.basic.info.dto.clientobject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
*
* @Author zhangyue
* @Date 2025-10-30 16:10:04
*/
@Data
public class ImgFilesBase64CO extends ImgFilesCO {
//文件类型
@ApiModelProperty(value = "文件类型")
private String mimeType;
//base64数据
@ApiModelProperty(value = "base64数据")
private String base64;
}