首先把字符串转换成字节流根据字节流转成MultipartFile 对象
/**
*
* @param fileData 文件数据
* @return
*/
//@Override
public BladeFile uploadByFileData(String fileData, String folderName) {
String fileName =UUID.randomUUID()+".txt";
InputStream inputStream = new ByteArrayInputStream(fileData.getBytes(StandardCharsets.UTF_8));
FileItem fileItem = createFileItem(inputStream, fileName);
//CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象
MultipartFile multipartFile= new CommonsMultipartFile(fileItem);
return saveFiles(multipartFile,folderName,null,null);
}
/**
* FileItem类对象创建
*
* @param inputStream inputStream
* @param fileName fileName
* @return FileItem
*/
public FileItem createFileItem(InputStream inputStream, String fileName) {
FileItemFactory factory = new DiskFileItemFactory(16, null);
String textFieldName = "file";
FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
int bytesRead = 0;
byte[] buffer = new byte[8192];
OutputStream os = null;
//使用输出流输出输入流的字节
try {
os = item.getOutputStream();
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
inputStream.close();
} catch (IOException e) {
throw new IllegalArgumentException("文件上传失败");
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
throw new IllegalArgumentException("流关闭出错");
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
throw new IllegalArgumentException("流关闭出错");
}
}
}
return item;
}
这里是读取minio文件的数据
@Override
public String getFileDateByFileUrl(String url) {
byte[] bytes = HttpUtil.downloadBytes(url);
return new String(bytes);
}