/**
* 獲取文件輸入流
* @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結果記錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.