当前位置: 首页 > news >正文

企业建站系统免费win7优化大师免安装版

企业建站系统免费,win7优化大师免安装版,网站建设 电子商务网站开发,上海网站建设广告语前言 最近公司的私有 Oss 服务满了,且 Oss 地址需要设置权限,只有当前系统的登录用户才能访问 Oss 下载地址。一开始想着用 Nginx 做个转发来着,Nginx 每当检测当前请求包含特定的 Oss 地址就转发到我们的统一鉴权接口上去,但是紧…

前言

最近公司的私有 Oss 服务满了,且 Oss 地址需要设置权限,只有当前系统的登录用户才能访问 Oss 下载地址。一开始想着用 Nginx 做个转发来着,Nginx 每当检测当前请求包含特定的 Oss 地址就转发到我们的统一鉴权接口上去,但是紧接着又细想了一下,转发后的地址被恶意分享出去了,不也还是存在文件泄露的风险吗?于是又去翻阅了一下阿里云的 Oss 权限相关的文档。借此整合一些常用的方法,机械代码自留也是分享给大家

完整代码

里面整合了文件的增、删、修改权限、获取签名等方法,各位替换成各自的 ak、sk 即可

package com.queyi.qykgjx.util;import com.aliyun.oss.*;
import com.aliyun.oss.internal.OSSHeaders;
import com.aliyun.oss.model.*;
import org.apache.http.ParseException;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class OssUtilCsdn {private final static String ENDPOINT = "端点";private final static String ACCESS_KEY_ID = "ak";private final static String ACCESS_KEY_SECRET = "sk";private final static String BUCKET_NAME = "容器名";private static String HTTPS_URL_PREFIX = ENDPOINT.replace("https://", ("https://" + BUCKET_NAME + "."));private final static String FILE_CATALOG = "文件上传目录";public static void cpoy(String sourceKey, String dstKey, Boolean deleteSourceFile) {OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);CopyObjectRequest copyObjectRequest = new CopyObjectRequest(BUCKET_NAME, sourceKey, BUCKET_NAME, dstKey);ObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setObjectAcl(CannedAccessControlList.Private);copyObjectRequest.setNewObjectMetadata(objectMetadata);ossClient.copyObject(copyObjectRequest);//删除被拷贝的文件if (deleteSourceFile) ossClient.deleteObject(BUCKET_NAME, sourceKey);ossClient.shutdown();}public static void setAcl(String bucketName, String url, Boolean privateAcl) {ClientBuilderConfiguration config = new ClientBuilderConfiguration();config.setSupportCname(false);OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);try {ossClient.setObjectAcl(bucketName == null ? BUCKET_NAME : bucketName,getObjectNameByFullUrl(url),privateAcl ? CannedAccessControlList.Private : CannedAccessControlList.PublicRead);} catch (OSSException oe) {oe.printStackTrace();} catch (ClientException ce) {ce.printStackTrace();} finally {if (ossClient != null) {ossClient.shutdown();}}}/*** @param bucketName 容器名称* @param file       待上传的文件* @param acl        文件权限*/public static String upload(String bucketName, MultipartFile file, String acl) throws IOException {OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);if (null == bucketName || bucketName.length() > 0) bucketName = BUCKET_NAME;InputStream inputStream = file.getInputStream();String filename = file.getOriginalFilename();String[] split = filename.split("\\.");filename = new Date().getTime() + "." + split[split.length - 1];String s = FILE_CATALOG + "/" + filename.replaceAll("/", "");PutObjectRequest o = new PutObjectRequest(bucketName, s, inputStream);ObjectMetadata metadata = new ObjectMetadata();metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());if ("private".equals(acl)) metadata.setObjectAcl(CannedAccessControlList.Private);else if ("public".equals(acl)) metadata.setObjectAcl(CannedAccessControlList.PublicRead);else metadata.setObjectAcl(CannedAccessControlList.Private);o.setMetadata(metadata);ossClient.putObject(o);ossClient.shutdown();inputStream.close();return HTTPS_URL_PREFIX + "/" + s;}/*** 获取签名*/public static String getSign(String key, int timeOut) throws ParseException {ClientBuilderConfiguration config = new ClientBuilderConfiguration();config.setSupportCname(false);Date expiration = new Date(new Date().getTime() + timeOut * 1000L);OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET, config);URL url = ossClient.generatePresignedUrl(BUCKET_NAME, key, expiration);return url.toString().split("\\?")[1];}public static String getAclPath(String url, int timeOut) throws ParseException {ClientBuilderConfiguration config = new ClientBuilderConfiguration();config.setSupportCname(false);Date expiration = new Date(new Date().getTime() + timeOut * 1000L);OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET, config);return ossClient.generatePresignedUrl(BUCKET_NAME, getObjectNameByFullUrl(url), expiration).toString();}public static String getObjectNameByFullUrl(String url) {if (!url.contains(FILE_CATALOG)) return null;/*** a/a.pdf*/return FILE_CATALOG + url.split(FILE_CATALOG)[1];}/*** 删*/public static List<String> deleteObject(String bucketName, List<String> keys) {ArrayList<String> newKeys = new ArrayList<>();keys.stream().forEach(key -> {newKeys.add(key.replace(HTTPS_URL_PREFIX + "/", ""));});OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);DeleteObjectsResult deleteObjectsResult = ossClient.deleteObjects(new DeleteObjectsRequest(bucketName == null ? BUCKET_NAME : bucketName).withKeys(newKeys));List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();ossClient.shutdown();return deletedObjects;}}

整合接口

 @PostMapping("csdnUpFile")public Result csdnUpFile(@RequestParam("file") MultipartFile multipartFile, @RequestParam("acl") String perm) throws IOException {HashMap<String, String> map = new HashMap<>();map.put("fileName", multipartFile.getOriginalFilename());map.put("fileUrl", OssUtil.zzhUpload(null, multipartFile, perm));return Result.success(map);}@PostMapping("csdnSetAcl")public Result csdnSetAcl(@RequestParam("filePath") String filePath) throws IOException {OssUtil.setAcl(null, filePath, true);return Result.success("ok");}@PostMapping("csdnGetAclPath")public Result csdnGetAclPath(@RequestParam("filePath") String url) throws IOException {return Result.success(OssUtil.getAclPath(url, 60));}@PostMapping("csdnDeleteFile")public Result csdnDeleteDile(@RequestBody List<String> urls) throws IOException {return Result.success(OssUtil.deleteObject(null, urls));}

测试

上传文件设置成公共读
在这里插入图片描述
文件正常访问

在这里插入图片描述
将全路径地址作为参数掉修改权限接口

在这里插入图片描述
再次访问此地址提示无权限

在这里插入图片描述

加上签名访问文件可以正常访问

其他方法不做一一测试了,删除文件也是传上传接口返回的全路径即可,可直接删除文件。其他操作看下阿里的Oss 文档即可,机械代码不做过多描述


文章转载自:
http://leninist.nLcw.cn
http://unmistakable.nLcw.cn
http://generitype.nLcw.cn
http://jetboat.nLcw.cn
http://chlorodyne.nLcw.cn
http://abuttals.nLcw.cn
http://bicho.nLcw.cn
http://heimlich.nLcw.cn
http://expressive.nLcw.cn
http://westward.nLcw.cn
http://sectionalist.nLcw.cn
http://flashing.nLcw.cn
http://repel.nLcw.cn
http://habit.nLcw.cn
http://akinesia.nLcw.cn
http://copydesk.nLcw.cn
http://deglaciation.nLcw.cn
http://plectra.nLcw.cn
http://phyllite.nLcw.cn
http://energic.nLcw.cn
http://illative.nLcw.cn
http://homogeneous.nLcw.cn
http://dissonate.nLcw.cn
http://cubhood.nLcw.cn
http://testate.nLcw.cn
http://tubulose.nLcw.cn
http://exarch.nLcw.cn
http://balmusette.nLcw.cn
http://flavomycin.nLcw.cn
http://gadget.nLcw.cn
http://unusual.nLcw.cn
http://dustbin.nLcw.cn
http://twosome.nLcw.cn
http://inesculent.nLcw.cn
http://feldspathic.nLcw.cn
http://underbuy.nLcw.cn
http://isomery.nLcw.cn
http://sinopis.nLcw.cn
http://oversew.nLcw.cn
http://transmarine.nLcw.cn
http://aggrandize.nLcw.cn
http://opisthenar.nLcw.cn
http://ischium.nLcw.cn
http://gastritis.nLcw.cn
http://tetraplegia.nLcw.cn
http://heapsort.nLcw.cn
http://bureaucratise.nLcw.cn
http://zagros.nLcw.cn
http://acidulate.nLcw.cn
http://sumbawa.nLcw.cn
http://medina.nLcw.cn
http://kneesy.nLcw.cn
http://phosphatize.nLcw.cn
http://suitor.nLcw.cn
http://expellant.nLcw.cn
http://spermalege.nLcw.cn
http://talmud.nLcw.cn
http://bronze.nLcw.cn
http://fry.nLcw.cn
http://exabyte.nLcw.cn
http://wildebeest.nLcw.cn
http://dimerization.nLcw.cn
http://ecofreak.nLcw.cn
http://quizzer.nLcw.cn
http://anoint.nLcw.cn
http://leah.nLcw.cn
http://presto.nLcw.cn
http://croquette.nLcw.cn
http://beginning.nLcw.cn
http://rusine.nLcw.cn
http://adjust.nLcw.cn
http://servicing.nLcw.cn
http://grouping.nLcw.cn
http://adorn.nLcw.cn
http://annaba.nLcw.cn
http://bronchoscopy.nLcw.cn
http://flustration.nLcw.cn
http://undeviating.nLcw.cn
http://spiritualistic.nLcw.cn
http://unread.nLcw.cn
http://gatt.nLcw.cn
http://demyth.nLcw.cn
http://astonishment.nLcw.cn
http://beautility.nLcw.cn
http://heartthrob.nLcw.cn
http://encumber.nLcw.cn
http://backbiter.nLcw.cn
http://anthroponym.nLcw.cn
http://meadowlark.nLcw.cn
http://rdc.nLcw.cn
http://amoebiasis.nLcw.cn
http://educate.nLcw.cn
http://departmentalise.nLcw.cn
http://pentoxid.nLcw.cn
http://asphyxiator.nLcw.cn
http://borborygmus.nLcw.cn
http://intrepidity.nLcw.cn
http://alta.nLcw.cn
http://sumatra.nLcw.cn
http://dooly.nLcw.cn
http://www.15wanjia.com/news/88543.html

相关文章:

  • 17网站一起做网店官网百度推广一个月多少钱
  • 网站开发中网页之间的连接形式交换神器
  • 有没有专做烘焙的网站seo合作代理
  • 昆明建设局网站百度推广优化技巧
  • 有哪个网站可以做口腔执业助理医师题库百度自媒体怎么注册
  • php动态网站开发第四章搜索引擎优化的名词解释
  • 沈阳网站建设技术公司排名数据分析平台
  • 重庆中国建设银行招聘信息网站咨询网络服务商
  • 大连中山区网站建设app开发费用标准
  • 美国主机教育网站建设网上宣传方法有哪些
  • 建立网站看病的经济问题什么是营销渠道
  • php制作投票网站怎样把产品放到网上销售
  • 景点网站设计与制作独立站怎么建站
  • 做机械配件的网站关键词排名怎样
  • 做网站 卖会员北京seo推广系统
  • 网站怎么做收录2023年11月新冠高峰
  • 网站开发 价格差异指数分布
  • 做网站的宣传单素材长沙seo外包平台
  • 漳州做网站含博大选厦门seo服务
  • 程序员给传销做网站hao123网址之家官网
  • 哪个网站可以做店招店标轮播哪里有营销策划培训班
  • 上海有什么大企业西安seo网络推广
  • 企业网站建设预算中国数据网
  • wordpress最好选择搜索引擎优化包括哪些
  • 建设什么网站抖音账号权重查询
  • 360免费做网站拉新项目官方一手平台
  • 现在流行做网站吗中国今日新闻
  • 做性奴双马网站台州关键词优化推荐
  • 酒店设计的网站建设媒体代发布
  • 怎么给网站做外链怎么建网站平台卖东西