/**
* 获取文件输入流
* @param list
* @param sheetName
* @param <T>
* @return
*/
private <T> InputStream getFileInputStream( List<T> list, String sheetName) {
if (list == null || list.isEmpty()) {
return null;
}
Class<?> clazz = list.get(0).getClass();
//避免乱码问题
ByteArrayOutputStream out = new ByteArrayOutputStream();
ExcelUtil excelUtil = new ExcelUtil<>(clazz);
excelUtil.exportExcel(list, sheetName, out);
byte[] bytes = out.toByteArray();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
return in;
}
public List<String> UploadFile() {
String host =192.168.120.1
//封装后的oass文件上传地址
//通过http请求了,底层还是ossClient
String url = host + "/v2.0/upload/file";
HttpPost post = new HttpPost(url);
MultipartEntityBuilder EntityBuilder = MultipartEntityBuilder.create();
//设置字符编码,防止乱码
ContentType contentType = ContentType.create("text/plain", Charset.forName("UTF-8"));
try {
List<String> list=new ArrayList<>;
String sheetName ="测试excel";
InputStream in = this.getFileInputStream(list, sheetName);
//为了兼容性选择xls
EntityBuilder.addBinaryBody("file", in, ContentType.MULTIPART_FORM_DATA, sheetName + ".xls");
/** 这里上传到oss不能指定文件名,如果需要指定可以使用
* ObjectMetadata meta = new ObjectMetadata();
* String filename = file.getOriginalName();
* meta.setContentDisposition("attachment;filename=\""+filename+"\"");
*/
post.setEntity(EntityBuilder.build());
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(post);
HttpEntity entity = response.getEntity();
String res = EntityUtils.toString(entity, "UTF-8");
JSONObject jsonObject = JSONObject.fromObject(res);
JSONArray data = jsonObject.getJSONArray("data");
List<String> list = new ArrayList<>();
for (int i = 0; i < data.size(); i++) {
JSONObject jsonObject1 = data.getJSONObject(i);
String filename = jsonObject1.getString("filename");
list.add(filename);
}
return list;
} catch (Exception e) {
logger.error("上传excel到oss异常", e);
return null;
}
}
list数据通过流直接保存到oss结果记录
使用流上传List数据到OSS
最新推荐文章于 2025-05-20 23:48:23 发布
这篇博客详细介绍了如何将List类型的数据利用流(Stream)直接上传到对象存储服务(OSS)。内容涵盖操作步骤、注意事项以及可能遇到的问题解决方案。
1275

被折叠的 条评论
为什么被折叠?



