首先,先从网络上读取到文件

 /*** 从网络Url中读取文件* @param urlStr 文件URL地址* @throws IOException*/public  String downLoadFromUrl(String urlStr) throws IOException{//把地址转换成URL对象URL url = new URL(urlStr);//创建http链接HttpURLConnection conn = (HttpURLConnection)url.openConnection();//设置超时间为3秒conn.setConnectTimeout(3*1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//得到输入流InputStream inputStream = conn.getInputStream();//截取链接中的文件名String fileName= urlStr.substring(urlStr.lastIndexOf("/")+1);//请求OSS方法URL resUrl = OSSUploadImage(inputStream,fileName,"imagesTest/");return resUrl.toString();
}

然后,设置OSS参数。

 /*** 存入OSS服务器* @param inputStream 文件流* @param fileNme 文件名* @param folder 文件存储文件夹* @return OSS文件URL*/
private  URL OSSUploadImage(InputStream inputStream,String fileNme,String folder){if(inputStream != null){//初始化OSSClientOSSClient ossClient=getOSSClient();//判断文件夹是否存在,不存在则创建createFolder(ossClient, "阿里云API的bucket名称",folder);//请求OSS服务器String md5key = uploadObject2OSSImage(ossClient, inputStream,fileNme, "阿里云API的bucket名称", folder);// 传后的文件MD5数字唯一签名:40F4131427068E08451D37F02021473ASystem.out.println("文件名--------------->"+fileNme);URL url =null;if(md5key != null){Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);// 生成URL,第一个参数为bucketName,第二个参数key为上传的文件路径名称,第三个为过期时间url = ossClient.generatePresignedUrl("阿里云API的bucket名称" , folder+fileNme , expiration);}System.out.println(url);return url;}return null;
}

最后上传至阿里云OSS文件服务器

 /*** 上传图片至OSS* @param ossClient  oss连接* @param is 文件输入流* @param bucketName  存储空间* @param folder 模拟文件夹名 如"qj_nanjing/"* @return String 返回的唯一MD5数字签名* */public static  String uploadObject2OSSImage(OSSClient ossClient, InputStream is,String fileName, String bucketName, String folder) {String resultStr = null;try {//文件大小int fileSize = is.available();//创建上传Object的MetadataObjectMetadata metadata = new ObjectMetadata();//上传的文件的长度metadata.setContentLength(is.available());//指定该Object被下载时的网页的缓存行为metadata.setCacheControl("no-cache");//指定该Object下设置Headermetadata.setHeader("Pragma", "no-cache");//指定该Object被下载时的内容编码格式metadata.setContentEncoding("utf-8");//文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成,//如果没有扩展名则填默认值application/octet-streammetadata.setContentType(getContentType(fileName));//指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称)metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte.");//上传文件   (上传文件流的形式)PutObjectResult putResult = ossClient.putObject(bucketName, folder + fileName, is, metadata);//解析结果resultStr = putResult.getETag();} catch (Exception e) {e.printStackTrace();logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e);}return resultStr;}

其他方法

  /*** 获取阿里云OSS客户端对象* @return ossClient*/public static  OSSClient getOSSClient(){return new OSSClient("阿里云API的内或外网域名","阿里云API的密钥Access Key ID", "阿里云API的密钥Access Key Secret");}/*** 创建模拟文件夹* @param ossClient oss连接* @param bucketName 存储空间* @param folder   模拟文件夹名如"qj_nanjing/"* @return  文件夹名*/public  static String createFolder(OSSClient ossClient,String bucketName,String folder){//文件夹名final String keySuffixWithSlash =folder;//判断文件夹是否存在,不存在则创建if(!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)){//创建文件夹ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));logger.info("创建文件夹成功");//得到文件夹名OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash);String fileDir=object.getKey();return fileDir;}return keySuffixWithSlash;}/*** 通过文件名判断并获取OSS服务文件上传时文件的contentType* @param fileName 文件名* @return 文件的contentType*/public static  String getContentType(String fileName){//文件的后缀名String fileExtension = fileName.substring(fileName.lastIndexOf("."));if(".bmp".equalsIgnoreCase(fileExtension)) {return "image/bmp";}if(".gif".equalsIgnoreCase(fileExtension)) {return "image/gif";}if(".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)  || ".png".equalsIgnoreCase(fileExtension) ) {return "image/jpeg";}if(".html".equalsIgnoreCase(fileExtension)) {return "text/html";}if(".txt".equalsIgnoreCase(fileExtension)) {return "text/plain";}if(".vsd".equalsIgnoreCase(fileExtension)) {return "application/vnd.visio";}if(".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {return "application/vnd.ms-powerpoint";}if(".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {return "application/msword";}if(".xml".equalsIgnoreCase(fileExtension)) {return "text/xml";}//默认返回类型return "image/jpeg";}/*** 重新设置OSS链接的有效时间,原来的可以正常使用,最好不要暴露出来* 防止其他人抓取你的链接,恶意使用,新的链接设置3-6个小时就行* @param url OSS设置的文件链接* @return 新的OSS链接*/public static  String getNewUrl(URL url){//初始化OSSClientOSSClient ossClient=AliyunOSSClientUtil.getOSSClient();//把URL对象转换成String字符串String path= String.valueOf(url);//截取出文件名String fileName= path.substring(path.lastIndexOf("/")+1,path.lastIndexOf("?"));//重新设置有效时间Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000);//申请OSS链接URL resUrl = ossClient.generatePresignedUrl(BACKET_NAME , fileName , expiration);return resUrl.toString();}

java通过URL获取网络文件并上传到阿里云OSS文件服务器相关推荐

  1. 生成Excel文件并上传到阿里云OSS

    代码 @Resourceprivate ExcelUtils excelUtils;@Async("doSomethingExecutor")Future doCreateStoc ...

  2. Java 常用工具类(9) : 图片上传至阿里云OSS

    阿里云OSS工具类 加强版 : https://blog.csdn.net/Lxinccode/article/details/79698259 import java.io.ByteArrayInp ...

  3. 图片文件压缩并上传至阿里云OSS

    图片处理 Thumbnails 在进行Java开发时可以使用Thumbnails工具类对图片进行处理,旋转.裁剪.格式转换.加水印等. 使用步骤 导包 <dependency><gr ...

  4. linux centos8 将指定本地目录下的文件上传到阿里云OSS上

    使用场景:为了解决高并发问题,尤其带宽限制(阿里云最高200M,当前首页一个用户请求4M的资源,导致带宽跟不上),jenkins打包vue下的前端静态资源上传到阿里云OSS上 前提工作:因工具是jav ...

  5. 微信头像下载并上传到阿里云OSS,PHP文件上传到阿里云OSS简单代码(OSS文件上传,微信头像下载,CURL下载文件,微信头像链接过期)

    (就这么个小事,有多少公司多少项目没做到!!) 微信公众号项目,后端获取到授权用户的微信头像后,要自行下载保存,不下载的话,微信返回的头像链接会在一段时间后过期,无法访问! 下面是我写的两个简单实用方 ...

  6. Linux环境Shell脚本上传下载阿里云OSS文件

    为什么80%的码农都做不了架构师?>>>    Linux环境Shell脚本上传下载阿里云OSS文件 背景 工作中由于我们项目生成的日志文件比较重要,而本地磁盘空间有限存储不了多久, ...

  7. 使用命令行将文件上传到阿里云OSS

    我司大概有20*4万个小文件需要上传到阿里云的OSS上面,我用阿里云的OSS client API上传,速度非常的慢,总共4年的数据,每年的数据大概是20万个小文件,上传效率非常慢,大概1年的数据要两 ...

  8. Springboot文件上传(本地上传、阿里云oss、腾讯云、华为云、Minio上传、七牛云)

    文件上传: 本地上传.阿里云oss.腾讯云.华为云.Minio上传.七牛云. <!-- 阿里云存储 --><dependency><groupId>com.aliy ...

  9. PHP如何下载微信语音到服务器,并将amr格式转换为MP3格式,最后上传到阿里云oss文件中

    第一步:下载微信语音到服务器中 废话不多说,直接上代码 1.总的流程方法(里面的方法在下面) 2.下载微信语音的方法 3.将微信语音的amr格式转换为MP3格式(需要使用FFmpeg,安装使用过程请看 ...

最新文章

  1. 【相机标定】四个坐标系之间的变换关系
  2. Java的知识点33——JDBC
  3. Reading Club week 3 prepare document
  4. python创建初始值列表_Python - 创建具有初始容量的列表
  5. python如何使用ppip安装xlwt_Python-xlwt库的基本使用
  6. pip install mysqlclient报错fails with EnvironmentError: mysql_config not found
  7. Flink批处理练习
  8. springcloud基于ribbon的canary路由方案 1
  9. cmd 将文件夹下文件剪切到另外一个文件_手把手教你运行第一个 Java 程序,看不懂你来骂我!...
  10. unix 连接 mysql_UNIX域套接字连接mysql
  11. python操作linux命令行_python调用调用Linux命令
  12. 应用程序的SQL查询原理
  13. 实习日记——Day11
  14. 继续理解socekt具体使用--2
  15. 进程已结束,退出代码-1073740791 (0xC0000409)
  16. 【可达编程】P0815. 歌手大赛
  17. 作业辅导视频 SS2023-HW13:最小相位系统
  18. 业余爱好者,学习JAVA在实际中有什么用途?
  19. 吴宇森导演的《赤壁》电影观后感
  20. 08 基础代谢率计算

热门文章

  1. 代码补全漫谈(2) - Miltos Allamanis
  2. 【你好面试官】008 Java内存模型指volatile底层原理详解、多处理器原子操作实现原理
  3. 关于算法设计与分析学习报告
  4. Get netty的魅力 从核心组件到工作原理
  5. Linux进程资源监控命令
  6. 诺基亚n73支持java_最强S60直板机王!诺基亚N系列三代N73详尽评测
  7. ACD Systems高调发ACDSee9 数字星空接手发行
  8. Universal USB Installer 使用教程
  9. HiveUDF的evaluate方法使用分析
  10. 如何安装WinCE6.0