package com.sgm.carpur.common.utils;
import com.sgm.carpur.common.base.CommonConstants;
import org.apache.http.HttpResponse;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
/**
* @description: 自定义文件处理工具类
* @author: yxia
* @create: 2021-05-11 20:19
**/
public class FileUtils {
private static final Logger log = LoggerFactory.getLogger(FileUtils.class);
/**
* 解析字符串类型文件
* @param is
* @param maxCol
* @return
* @throws IOException
*/
public static String[][] parsingExcelStr(InputStream is,int maxCol) {
Workbook wb = null;
Sheet sheet = null;
Row row = null;
try {
wb = new XSSFWorkbook(is);
//获取第一个sheet
sheet = wb.getSheetAt(0);
//最大行标
int rownum=sheet.getLastRowNum();
String [][]datas=new String[rownum+1][maxCol];
for(int i=0;i<=rownum;i++){
String [] columns=new String[maxCol];
datas[i]=columns;
row = sheet.getRow(i);
for(int j=0;j<maxCol;j++){
Cell cell=row.getCell(j);
if(cell==null){
columns[j]=null;
}else{
columns[j]=cell.getStringCellValue().trim();
}
}
}
return datas;
} catch (Exception e) {
log.info("文件解析异常",e);
return null;
}
}
public static String fileUploadToSGMServe(byte[] bytes,String fileName,String appId,String uploadUrl)throws IOException{
//创建HTTPClient MultipartEntityBuilder对象
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
//将appId, folder, file添加到Entity中
builder.addTextBody("appId", appId);
// builder.addTextBody("folder", "test"); //optional parameter
builder.addBinaryBody("file", bytes, ContentType.APPLICATION_OCTET_STREAM, URLEncoder.encode(fileName,"UTF-8"));
//发起HTTP POST请求访问单文件上传服务
return Request.Post(uploadUrl).body(builder.build()).execute().returnContent().asString();
}
public static InputStream downloadFileFromSGMServe(String fileUri,String appId,String downloadUrl) throws IOException {
HttpResponse res = Request.Get(downloadUrl + URLEncoder.encode(fileUri,"UTF-8") + "?appId="+appId).execute().returnResponse();
//文件下载失败 抛出文件IO异常
if(CommonConstants.ERROR_CODE==res.getStatusLine().getStatusCode()){
throw new IOException("下载失败");
}
return res.getEntity().getContent();
}
}