//https下载
fileUrl文件路径
fileLocal本地路径
public static void downloadFile(String fileUrl, String fileLocal, HttpServletResponse resp){
HttpsURLConnection urlCon = null;
try {
SSLContext sslcontext = SSLContext.getInstance("SSL", "SunJSSE");
sslcontext.init(null, new TrustManager[]{new com.lss.X509TrustUtiil()}, new java.security.SecureRandom());
resp.setHeader("content-type", "application/octet-stream");
resp.setContentType("application/octet-stream");
resp.setHeader("Content-Disposition", "attachment;filename=" + "111.png");
URL url = new URL(fileUrl);
HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslsession) {
System.out.println("WARNING: Hostname is not matched for cert.");
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
urlCon = (HttpsURLConnection) url.openConnection();
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
} catch (Exception e) {
}
// 读文件流
// DataInputStream in = new DataInputStream(urlCon.getInputStream());
// DataOutputStream out = new DataOutputStream(new FileOutputStream(fileLocal));
// byte[] buffer = new byte[2048];
// int count = 0;
// while ((count = in.read(buffer)) > 0) {
// out.write(buffer, 0, count);
// }
// out.close();
// in.close();
//buff设置为1,避免https下载图片失桢
byte[] buff = new byte[1];
try(OutputStream os = resp.getOutputStream(); BufferedInputStream bis = new BufferedInputStream(urlCon.getInputStream())){
int i = bis.read(buff);
while (i != -1) {
os.write(buff, 0, buff.length);
os.flush();
i = bis.read(buff);
}
} catch (Exception e) {
}
}
ssl工具
public class X509TrustUtiil implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
}
http下载文件
urlPath 文件路径
public static void downLoad(HttpServletResponse resp, String urlPath) {
int lastIndex = urlPath.lastIndexOf("\\");
lastIndex = lastIndex==-1?urlPath.lastIndexOf("/"):lastIndex;
String fileName =urlPath.substring(lastIndex-1);
resp.setHeader("content-type", "application/octet-stream");
resp.setContentType("application/octet-stream");
resp.setHeader("Content-Disposition", "attachment;filename=" + fileName);
URLConnection conn;
try {
URL url = new URL(urlPath);
conn = url.openConnection();
} catch (Exception e) {
}
byte[] buff = new byte[1024];
try(OutputStream os = resp.getOutputStream();BufferedInputStream bis = new BufferedInputStream(conn.getInputStream())){
int i = bis.read(buff);
while (i != -1) {
os.write(buff, 0, buff.length);
os.flush();
i = bis.read(buff);
}
} catch (Exception e) {
}
}