中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

安徽省住房與城鄉(xiāng)建設(shè)網(wǎng)站網(wǎng)絡(luò)推廣怎么做

安徽省住房與城鄉(xiāng)建設(shè)網(wǎng)站,網(wǎng)絡(luò)推廣怎么做,網(wǎng)站快速收錄入口,長(zhǎng)安英文網(wǎng)站建設(shè)前言 最近公司的私有 Oss 服務(wù)滿(mǎn)了,且 Oss 地址需要設(shè)置權(quán)限,只有當(dāng)前系統(tǒng)的登錄用戶(hù)才能訪(fǎng)問(wèn) Oss 下載地址。一開(kāi)始想著用 Nginx 做個(gè)轉(zhuǎn)發(fā)來(lái)著,Nginx 每當(dāng)檢測(cè)當(dāng)前請(qǐng)求包含特定的 Oss 地址就轉(zhuǎn)發(fā)到我們的統(tǒng)一鑒權(quán)接口上去,但是緊…

前言

最近公司的私有 Oss 服務(wù)滿(mǎn)了,且 Oss 地址需要設(shè)置權(quán)限,只有當(dāng)前系統(tǒng)的登錄用戶(hù)才能訪(fǎng)問(wèn) Oss 下載地址。一開(kāi)始想著用 Nginx 做個(gè)轉(zhuǎn)發(fā)來(lái)著,Nginx 每當(dāng)檢測(cè)當(dāng)前請(qǐng)求包含特定的 Oss 地址就轉(zhuǎn)發(fā)到我們的統(tǒng)一鑒權(quán)接口上去,但是緊接著又細(xì)想了一下,轉(zhuǎn)發(fā)后的地址被惡意分享出去了,不也還是存在文件泄露的風(fēng)險(xiǎn)嗎?于是又去翻閱了一下阿里云的 Oss 權(quán)限相關(guān)的文檔。借此整合一些常用的方法,機(jī)械代碼自留也是分享給大家

完整代碼

里面整合了文件的增、刪、修改權(quán)限、獲取簽名等方法,各位替換成各自的 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 = "端點(diǎn)";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 容器名稱(chēng)* @param file       待上傳的文件* @param acl        文件權(quán)限*/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));}

測(cè)試

上傳文件設(shè)置成公共讀
在這里插入圖片描述
文件正常訪(fǎng)問(wèn)

在這里插入圖片描述
將全路徑地址作為參數(shù)掉修改權(quán)限接口

在這里插入圖片描述
再次訪(fǎng)問(wèn)此地址提示無(wú)權(quán)限

在這里插入圖片描述

加上簽名訪(fǎng)問(wèn)文件可以正常訪(fǎng)問(wèn)

其他方法不做一一測(cè)試了,刪除文件也是傳上傳接口返回的全路徑即可,可直接刪除文件。其他操作看下阿里的Oss 文檔即可,機(jī)械代碼不做過(guò)多描述

http://www.risenshineclean.com/news/54239.html

相關(guān)文章:

  • 上海網(wǎng)站建設(shè)的企濟(jì)南網(wǎng)站建設(shè)方案
  • 網(wǎng)站和webapp的區(qū)別網(wǎng)上推廣平臺(tái)
  • 網(wǎng)站建設(shè)詳細(xì)需求文檔東莞做網(wǎng)站哪個(gè)公司好
  • 全屏網(wǎng)站尺寸鄭州seo哪家專(zhuān)業(yè)
  • 如何提升網(wǎng)站速度女生讀網(wǎng)絡(luò)營(yíng)銷(xiāo)與電商直播
  • 珠江現(xiàn)代建設(shè) 雜志社網(wǎng)站石家莊seo網(wǎng)絡(luò)優(yōu)化的公司
  • 科技打破壟斷全球的霸權(quán)鄭州seo排名優(yōu)化公司
  • 做門(mén)戶(hù)網(wǎng)站源碼上海網(wǎng)絡(luò)推廣平臺(tái)
  • php 做網(wǎng)站網(wǎng)店無(wú)貨源怎么做
  • 交友系統(tǒng)網(wǎng)站建設(shè)系統(tǒng)優(yōu)化的方法
  • 網(wǎng)站建設(shè)教程下載seo如何快速排名
  • 網(wǎng)站一屏做多大網(wǎng)址域名注冊(cè)
  • 手機(jī)網(wǎng)站制作行業(yè)排行前端seo搜索引擎優(yōu)化
  • 網(wǎng)站內(nèi)容作弊的形式南寧網(wǎng)站建設(shè)網(wǎng)絡(luò)公司
  • 建網(wǎng)站能在家里做嗎網(wǎng)站設(shè)計(jì)的流程
  • 中國(guó)紀(jì)檢監(jiān)察報(bào)電子報(bào)鄭州seo優(yōu)化顧問(wèn)阿亮
  • wordpress首頁(yè)調(diào)用文章縮略圖上海百度整站優(yōu)化服務(wù)
  • 做網(wǎng)站加班市場(chǎng)調(diào)研報(bào)告范文
  • wordpress 鏈接 中文亂碼小璇seo優(yōu)化網(wǎng)站
  • 南寧網(wǎng)站推廣最新熱搜榜
  • 網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師需要的基礎(chǔ)百度網(wǎng)站怎樣優(yōu)化排名
  • 亞洲7號(hào)衛(wèi)星電視windows優(yōu)化大師下載
  • 網(wǎng)站 代備案谷歌google下載
  • wordpress 網(wǎng)頁(yè)飄窗深圳網(wǎng)站seo推廣
  • 網(wǎng)站后臺(tái)生成器網(wǎng)站制作優(yōu)化排名
  • 自己做的網(wǎng)站如何上首頁(yè)朝陽(yáng)區(qū)seo
  • 一個(gè)空間開(kāi)幾個(gè)網(wǎng)站各大網(wǎng)站提交入口
  • 什么網(wǎng)站能通過(guò)做任務(wù)賺錢(qián)嗎獨(dú)立站怎么建站
  • 成品網(wǎng)站源碼1688版本號(hào)旺道seo推廣系統(tǒng)怎么收費(fèi)
  • 極路由做網(wǎng)站怎么樣推廣自己的網(wǎng)站