Flask接口签名sign原理与实例代码浅析
332
2022-12-16
Java下载https文件并上传阿里云oss服务器
这篇文章主要介绍了java下载https文件并上传到阿里云oss服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路。
一共两个类:
1 、实现自己的证书信任管理器类
/**
* @author mazhq
* @Title: X509TrustUtiil
* @ProjectName: zeus
* @Description: 证书信任管理器类
* @date 2019/2/18 15:14
*/
public class X509TrustUtil implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
2、阿里云上传工具类
/**
* @author mazhq
* @Title: OSSUtil
* @ProjectName: zeus
* @Description: TODO
* @date 2019/2/18 14:07
*/
public class OSSUtil {
/**
* @Description: 上传文件到阿里云
* @param recordingLink
* @param fileName
* @return void
* @exception
* @author mazhq
* @date 2019/2/18 14:30
*/
public static String uploadRecording(jsONObject ossJson, String recordingLink, String fileName){
try {
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "";
String bucketServer;
String bucketName;
bucketName = "dev-uploadtoimages";
endpoint = "http://oss-devimage.xxxx.com/";
bucketServer = "http://dev-uploadtoimages.oss-cn-beijing.aliyuncs.com/";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = ossJson.getString("accessKeyId");
String accessKeySecret = ossJson.getString("accessKeySecret");
String security = ossJson.getString("security");
// 创建OSSClient实例。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret, security);
// 上传网络流。
SSLContext sslcontext = SSLContext.getInstance("SSL", "SunJSSE");
sslcontext.init(null, new TrustManager[] { new X509TrustUtil() }, new java.security.SecureRandom());
URL url = new URL(recordingLink);
HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
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());
HttpsURLConnection urlCon = (HttpsURLConnection) url.openConnection();
urlCon.setConnectTimeout(6000);
urlCon.setReadTimeout(6000);
int code = urlCon.getResponseCode();
if (code != HttpURLConnection.HTTP_OK) {
throw new Exception("文件读取失败");
}
// 读文件流
InputStream inputStream = urlCon.getInputStream();
// 上传文件 (上传文件流的形式)
ossClient.putObject(bucketName,iSbeyyLVqN "recording/"+fileName, inputStream);
// 关闭OSSClient。
ossClient.shutdown();
return bucketServer+"recording/"+fileName;
} catch (IOException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
结论:
两个类搭配着用,完美解决下载https文件上传到阿里oss返回上传之后路径。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~