欢迎光临
我们一直在努力

使用阿里云服务器(OOS)实现图片上传

 

一: 页面

 

二: 后台   使用的是spring的文件接受类  使用MultipartFile接收

 

三 : 阿里云OSS  封装的工具类

package com.szy.project.utils; import java.io.*; import java.net.URL; import java.util.Date; import java.util.Random; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.objectmetadata; import com.aliyun.oss.model.PutObjectResult; import org.springframework.util.stringUtils; import org.springframework.web.multipart.MultipartFile; /** * 阿里云 OSS文件类 参考文档 https://help.aliyun.com/product/31815.html?spm=5176.750001.2.8.SZvzsM * * @author sunzhenyang */ public class OssClienUtils { Log log = LogFactory.getLog(OssClienUtils.class); // endpoint以北京为例,其它region请按实际情况填写 private String endpoint = "http://oss-cn-beijing.aliyuncs.com"; // accessKey和accessKeySecret 为购买阿里云服务时官方提供 private String accessKeyId = "LTAIuB5R5******"; private String accessKeySecret = "56DOZQ2yRPE8n*****"; //空间 private String bucketName = "image"; //文件存储目录 (上传时在key前面加上目录 默认创建) private String date = "img/"; private OSSClient ossClient; public OssClienUtils() { ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); } /** * 销毁 */ public void destory() { ossClient.shutdown(); } /** * 上传图片 直接获取本地资源路径 * * @param url * @throws Exception */ public void uploadImg2Oss(String url) throws Exception { File fileOnServer = new File(url); FileInputStream fin; try { fin = new FileInputStream(fileOnServer); String[] split = url.split("/"); this.uploadFile2OSS(fin, split[split.length - 1]); } catch (FileNotFoundException e) { throw new Exception("图片上传失败"); } } /** * 上传图片 * @param file * @return key 可根据key获取上到到服务器的志愿和删除等操作 * @throws Exception */ public String uploadImg2Oss(MultipartFile file,String typeDate) throws Exception { this.date=typeDate; // if (file.getSize() > 1024 * 1024) { // throw new Exception("上传图片大小不能超过1M!"); // } String originalFilename = file.getOriginalFilename(); String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase(); Random random = new Random(); String name = random.nextInt(10000) + System.currentTimeMillis() + substring; try { InputStream inputStream = file.getInputStream(); this.uploadFile2OSS(inputStream, name); return name; } catch (Exception e) { throw new Exception("图片上传失败"); } } /** * 上传到OSS服务器 如果同名文件会覆盖服务器上的 * * @param instream 文件流 * @param fileName 文件名称 包括后缀名 * @return 出错返回"" ,唯一MD5数字签名 */ public String uploadFile2OSS(InputStream instream, String fileName) { String ret = ""; try { //创建上传Object的Metadata  ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentLength(instream.available()); objectMetadata.setCacheControl("no-cache"); objectMetadata.setHeader("Pragma", "no-cache"); objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf(".")))); objectMetadata.setContentDisposition("inline;filename=" + fileName); //上传文件 PutObjectResult putResult = ossClient.putObject(bucketName, date + fileName, instream, objectMetadata); ret = putResult.getETag(); } catch (IOException e) { log.error(e.getMessage(), e); } finally { try { if (instream != null) { instream.close(); } } catch (IOException e) { e.printStackTrace(); } } return ret; } /** * 获得图片路径 * * @param fileUrl * @return */ public String getImgUrl(String fileUrl) { if (!StringUtils.isEmpty(fileUrl)) { String[] split = fileUrl.split("/"); return this.getUrl(this.date + split[split.length - 1]); } return null; } /** * Description: 判断OSS服务文件上传时文件的contentType * * @param FilenameExtension 文件后缀 * @return String */ public static String getcontentType(String FilenameExtension) { if (FilenameExtension.equalsIgnoreCase("bmp")) { return "image/bmp"; } if (FilenameExtension.equalsIgnoreCase("gif")) { return "image/gif"; } if (FilenameExtension.equalsIgnoreCase("jpeg") || FilenameExtension.equalsIgnoreCase("jpg") || FilenameExtension.equalsIgnoreCase("png")) { return "image/jpeg"; } if (FilenameExtension.equalsIgnoreCase("html")) { return "text/html"; } if (FilenameExtension.equalsIgnoreCase("txt")) { return "text/plain"; } if (FilenameExtension.equalsIgnoreCase("vsd")) { return "application/vnd.visio"; } if (FilenameExtension.equalsIgnoreCase("pptx") || FilenameExtension.equalsIgnoreCase("ppt")) { return "application/vnd.ms-powerpoint"; } if (FilenameExtension.equalsIgnoreCase("docx") || FilenameExtension.equalsIgnoreCase("doc")) { return "application/msword"; } if (FilenameExtension.equalsIgnoreCase("xml")) { return "text/xml"; } return "image/jpeg"; } /** * 获得url链接 * * @param key * @return */ public String getUrl(String key) { // 设置URL过期时间为10年 3600l* 1000*24*365*10 Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10); // 生成URL URL url = ossClient.generatePresignedUrl(bucketName, key, expiration); if (url != null) { return url.toString(); } return null; } /** * 删除单个文件 */ public void delFile(String key){ ossClient.deleteObject(bucketName, key); } }

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《使用阿里云服务器(OOS)实现图片上传》
文章链接:https://www.456zj.com/2930.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址