pdf文件上传下载oss
1.下载
//下载文件 关键是要把地址转为public
public File downloadPdf(String fileUrl, String saveUrl, String fileName, String token, String servletName) {
File file = null;
***//转用公用的地址 如果是一般服务器直接下载
String urlPublic = this.getUrlPublic(fileUrl, token, servletName);
if(StringUtils.isBlank(urlPublic)){
throw new RuntimeException("请求地址转换异常");
}***
try {
URL url = new URL(urlPublic);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(5 * 1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取自己数组
byte[] getData = readInputStream(inputStream);
//文件保存位置
// saveDir = new File(saveUrl);
// if (!saveDir.exists()) {
// saveDir.mkdir();
// }
file = new File(saveUrl + "/" + fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(getData);
if (fos != null) {
fos.close();
}
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
throw new RuntimeException("文件下载失败或者流转换异常");
}
//返回存储路径最好
return file;
}
//将流转为字节数组
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
//获取桌面路路径
public static String getDesktop() {
File desktopDir = FileSystemView.getFileSystemView()
.getHomeDirectory();
return desktopDir.getAbsolutePath();
}
2.上传
//发送请求,开始上传文件
public String sendFileToOss(Map map, File file) {
HttpResponse response;
String respContent = "";
HttpClient client = HttpClients.createDefault();
//参数
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.addTextBody("key", "value");
entityBuilder.addTextBody("key", "value");
entityBuilder.addTextBody("key", "value");
try {
// packageHeaderSn1(map,entityBuilder);
文件
entityBuilder.addBinaryBody("file", new FileInputStream(file), ContentType.APPLICATION_OCTET_STREAM, file.getName());
HttpEntity entity = entityBuilder.build();
HttpPost post = new HttpPost(sendGetParam.getHost());
post.setEntity(entity);
response = client.execute(post);
HttpEntity entityBack = response.getEntity();
respContent = EntityUtils.toString(entityBack, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return respContent;
}
3.带有参数的get请求
//这个带token的
public String httpGet(String url, String token) {
//规定返回值
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse httpResponse;
String finalString = null;
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("accept", "*/*");
httpGet.setHeader("Accept-Encoding", "gzip, deflate");
httpGet.setHeader("Cache-Control", "no-cache");
httpGet.setHeader("Content-Type", "application/json;charset=UTF-8");
httpGet.setHeader("Authorization", token);
System.out.println("发起请求的信息:" + httpGet);
try {
httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
finalString = EntityUtils.toString(entity, "UTF-8");
try {
httpResponse.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
//返回请求必须的参数
return finalString;