国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot3 + uniapp 對接 阿里云0SS 實現(xiàn)上傳圖片視頻到 0SS 以及 0SS 里刪除圖片視頻的操作(最新)

這篇具有很好參考價值的文章主要介紹了SpringBoot3 + uniapp 對接 阿里云0SS 實現(xiàn)上傳圖片視頻到 0SS 以及 0SS 里刪除圖片視頻的操作(最新)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最終效果圖


SpringBoot3 + uniapp 對接 阿里云0SS 實現(xiàn)上傳圖片視頻到 0SS 以及 0SS 里刪除圖片視頻的操作(最新),技術(shù)分享,SpringBoot,項目踩坑日記,uni-app,阿里云,音視頻文章來源地址http://www.zghlxwxcb.cn/news/detail-851185.html

uniapp 的源碼

UpLoadFile.vue


 <template>
 	<!-- 上傳start -->
 	<view style="display: flex; flex-wrap: wrap;">
 		<view class="update-file">
 			<!--圖片-->
 			<view v-for="(item,index) in imageList" :key="index">
 				<view class="upload-box">
 					<image class="preview-file" :src="item" @tap="previewImage(item)"></image>
 					<view class="remove-icon" @tap="delect(index)">
 						<u-icon name="trash"></u-icon>
 						<!-- <image src="../../static/images/del.png" class="del-icon" mode=""></image> -->
 					</view>
 				</view>
 			</view>

 			<!--視頻-->
 			<view v-for="(item1, index1) in srcVideo" :key="index1">
 				<view class="upload-box">
 					<video class="preview-file" :src="item1"></video>
 					<view class="remove-icon" @tap="delectVideo(index1)">
 						<u-icon name="trash"></u-icon>
 						<!-- <image src="../../static/images/del.png" class="del-icon" mode=""></image> -->
 					</view>
 				</view>
 			</view>

 			<!--按鈕-->
 			<view v-if="VideoOfImagesShow" @tap="chooseVideoImage" class="upload-btn">
 				<!-- <image src="../../static/images/jia.png" style="width:30rpx;height:30rpx;" mode=""></image> -->
 				<view class="btn-text">上傳</view>
 			</view>
 		</view>
 	</view>
 	<!-- 上傳 end -->
 </template>
 <script>
 	import {
 		deleteFileApi
 	} from '../../api/file/deleteOssFile';
 	var sourceType = [
 		['camera'],
 		['album'],
 		['camera', 'album']
 	];
 	export default {
 		data() {
 			return {
 				hostUrl: "http://192.168.163.30:9999/api/file/upload",
 				// 上傳圖片視頻
 				VideoOfImagesShow: true, // 頁面圖片或視頻數(shù)量超出后,拍照按鈕隱藏
 				imageList: [], //存放圖片的地址
 				srcVideo: [], //視頻存放的地址
 				sourceType: ['拍攝', '相冊', '拍攝或相冊'],
 				sourceTypeIndex: 2,
 				cameraList: [{
 					value: 'back',
 					name: '后置攝像頭',
 					checked: 'true'
 				}, {
 					value: 'front',
 					name: '前置攝像頭'
 				}],
 				cameraIndex: 0, //上傳視頻時的數(shù)量
 				//上傳圖片和視頻
 				uploadFiles: [],
 			}
 		},
 		onUnload() {
 			// 上傳
 			this.imageList = [];
 			this.sourceTypeIndex = 2;
 			this.sourceType = ['拍攝', '相冊', '拍攝或相冊'];
 		},
 		methods: {
 			//點擊上傳圖片或視頻
 			chooseVideoImage() {
 				uni.showActionSheet({
 					title: '選擇上傳類型',
 					itemList: ['圖片', '視頻'],
 					success: res => {
 						console.log(res);
 						if (res.tapIndex == 0) {
 							this.chooseImages();
 						} else {
 							this.chooseVideo();
 						}
 					}
 				});
 			},
 			//上傳圖片
 			chooseImages() {
 				uni.chooseImage({
 					count: 9, //默認是9張
 					sizeType: ['original', 'compressed'], //可以指定是原圖還是壓縮圖,默認二者都有
 					sourceType: ['album', 'camera'], //從相冊選擇
 					success: res => {
 						console.log(res, 'ddddsss')
 						let imgFile = res.tempFilePaths;

 						imgFile.forEach(item => {
 							uni.uploadFile({
 								url: this.hostUrl, //僅為示例,非真實的接口地址
 								method: "POST",
 								header: {
 									token: uni.getStorageSync('localtoken')
 								},
 								filePath: item,
 								name: 'file',
 								success: (result) => {
 									let res = JSON.parse(result.data)
 									console.log('打印res:', res)
 									if (res.code == 200) {
 										this.imageList = this.imageList.concat(res.data);
 										console.log(this.imageList, '上傳圖片成功')

 										if (this.imageList.length >= 9) {
 											this.VideoOfImagesShow = false;
 										} else {
 											this.VideoOfImagesShow = true;
 										}
 									}
 									uni.showToast({
 										title: res.msg,
 										icon: 'none'
 									})

 								}
 							})
 						})

 					}
 				})
 			},

 			//上傳視頻
 			chooseVideo(index) {
 				uni.chooseVideo({
 					maxDuration: 120, //拍攝視頻最長拍攝時間,單位秒。最長支持 60 秒
 					count: 9,
 					camera: this.cameraList[this.cameraIndex].value, //'front'、'back',默認'back'
 					sourceType: sourceType[this.sourceTypeIndex],
 					success: res => {
 						let videoFile = res.tempFilePath;

 						uni.showLoading({
 							title: '上傳中...'
 						});
 						uni.uploadFile({
 							url: this.hostUrl, //上傳文件接口地址
 							method: "POST",
 							header: {
 								token: uni.getStorageSync('localtoken')
 							},
 							filePath: videoFile,
 							name: 'file',
 							success: (result) => {
 								uni.hideLoading();
 								let res = JSON.parse(result.data)
 								if (res.code == 200) {
 									console.log(res);
 									this.srcVideo = this.srcVideo.concat(res.data);
 									if (this.srcVideo.length == 9) {
 										this.VideoOfImagesShow = false;
 									}
 								}
 								uni.showToast({
 									title: res.msg,
 									icon: 'none'
 								})

 							},
 							fail: (error) => {
 								uni.hideLoading();
 								uni.showToast({
 									title: error,
 									icon: 'none'
 								})
 							}
 						})
 					},
 					fail: (error) => {
 						uni.hideLoading();
 						uni.showToast({
 							title: error,
 							icon: 'none'
 						})
 					}
 				})
 			},

 			//預覽圖片
 			previewImage: function(item) {
 				console.log('預覽圖片', item)
 				uni.previewImage({
 					current: item,
 					urls: this.imageList
 				});
 			},

 			// 刪除圖片
 			delect(index) {
 				uni.showModal({
 					title: '提示',
 					content: '是否要刪除該圖片',
 					success: res => {
 						if (res.confirm) {
 							deleteFileApi(this.imageList[index].split("/")[3]);
 							this.imageList.splice(index, 1);
 						}
 						if (this.imageList.length == 4) {
 							this.VideoOfImagesShow = false;
 						} else {
 							this.VideoOfImagesShow = true;
 						}
 					}
 				});
 			},
 			// 刪除視頻
 			delectVideo(index) {
 				uni.showModal({
 					title: '提示',
 					content: '是否要刪除此視頻',
 					success: res => {
 						if (res.confirm) {
 							console.log(index);
 							console.log(this.srcVideo[index]);
 							deleteFileApi(this.srcVideo[index].split("/")[3]);
 							this.srcVideo.splice(index, 1);
 						}
 						if (this.srcVideo.length == 4) {
 							this.VideoOfImagesShow = false;
 						} else {
 							this.VideoOfImagesShow = true;
 						}
 					}
 				});
 			},
 			// 上傳 end
 		}
 	}
 </script>

 <style scoped lang="scss">
 	// 上傳
 	.update-file {
 		margin-left: 10rpx;
 		height: auto;
 		display: flex;
 		justify-content: space-between;
 		flex-wrap: wrap;
 		margin-bottom: 5rpx;

 		.del-icon {
 			width: 44rpx;
 			height: 44rpx;
 			position: absolute;
 			right: 10rpx;
 			top: 12rpx;
 		}

 		.btn-text {
 			color: #606266;
 		}

 		.preview-file {
 			width: 200rpx;
 			height: 180rpx;
 			border: 1px solid #e0e0e0;
 			border-radius: 10rpx;
 		}

 		.upload-box {
 			position: relative;
 			width: 200rpx;
 			height: 180rpx;
 			margin: 0 20rpx 20rpx 0;

 		}

 		.remove-icon {
 			position: absolute;
 			right: -10rpx;
 			top: -10rpx;
 			z-index: 1000;
 			width: 30rpx;
 			height: 30rpx;
 		}

 		.upload-btn {
 			width: 200rpx;
 			height: 180rpx;
 			border-radius: 10rpx;
 			background-color: #f4f5f6;
 			display: flex;
 			justify-content: center;
 			align-items: center;
 		}
 	}

 	.guide-view {
 		margin-top: 30rpx;
 		display: flex;

 		.guide-text {
 			display: flex;
 			flex-direction: column;
 			justify-content: space-between;
 			padding-left: 20rpx;

 			.guide-text-price {
 				padding-bottom: 10rpx;
 				color: #ff0000;
 				font-weight: bold;
 			}
 		}
 	}

 	.service-process {
 		background-color: #ffffff;
 		padding: 20rpx;
 		padding-top: 30rpx;
 		margin-top: 30rpx;
 		border-radius: 10rpx;
 		padding-bottom: 30rpx;

 		.title {
 			text-align: center;
 			margin-bottom: 20rpx;
 		}
 	}

 	.form-view-parent {
 		border-radius: 20rpx;
 		background-color: #FFFFFF;
 		padding: 0rpx 20rpx;

 		.form-view {
 			background-color: #FFFFFF;
 			margin-top: 20rpx;
 		}

 		.form-view-textarea {
 			margin-top: 20rpx;
 			padding: 20rpx 0rpx;

 			.upload-hint {
 				margin-top: 10rpx;
 				margin-bottom: 10rpx;
 			}
 		}
 	}


 	.bottom-class {
 		margin-bottom: 60rpx;
 	}

 	.bottom-btn-class {
 		padding-bottom: 1%;

 		.bottom-hint {
 			display: flex;
 			justify-content: center;
 			padding-bottom: 20rpx;

 		}
 	}
 </style>

deleteOssFile.js


import http from "../../utils/httpRequest/http";

// 刪除圖片
export const deleteFileApi = (fileName) =>{
	console.log(fileName);
	return http.put(`/api/file/upload/${fileName}`);
} 

http.js


const baseUrl = 'http://192.168.163.30:9999';
// const baseUrl = 'http://localhost:9999';
const http = (options = {}) => {
	return new Promise((resolve, reject) => {
		uni.request({
			url: baseUrl + options.url || '',
			method: options.type || 'GET',
			data: options.data || {},
			header: options.header || {}
		}).then((response) => {
			// console.log(response);
			if (response.data && response.data.code == 200) {
				resolve(response.data);
			} else {
				uni.showToast({
					icon: 'none',
					title: response.data.msg,
					duration: 2000
				});
			}
		}).catch(error => {
			reject(error);
		})
	});
}
/**
 * get 請求封裝
 */
const get = (url, data, options = {}) => {
	options.type = 'get';
	options.data = data;
	options.url = url;
	return http(options);
}

/**
 * post 請求封裝
 */
const post = (url, data, options = {}) => {
	options.type = 'post';
	options.data = data;
	options.url = url;
	return http(options);
}

/**
 * put 請求封裝
 */
const put = (url, data, options = {}) => {
	options.type = 'put';
	options.data = data;
	options.url = url;
	return http(options);
}

/**
 * upLoad 上傳
 * 
 */
const upLoad = (parm) => {
	return new Promise((resolve, reject) => {
		uni.uploadFile({
			url: baseUrl + parm.url,
			filePath: parm.filePath,
			name: 'file',
			formData: {
				openid: uni.getStorageSync("openid")
			},
			header: {
				// Authorization: uni.getStorageSync("token")
			},
			success: (res) => {
				resolve(res.data);
			},
			fail: (error) => {
				reject(error);
			}
		})
	})
}

export default {
	get,
	post,
	put,
	upLoad,
	baseUrl
}

SpringBoot3 的源碼

FileUploadController.java

package com.zhx.app.controller;

import com.zhx.app.utils.AliOssUtil;
import com.zhx.app.utils.ResultUtils;
import com.zhx.app.utils.ResultVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

/**
 * @ClassName : FileUploadController
 * @Description : 文件上傳相關(guān)操作
 * @Author : zhx
 * @Date: 2024-03-01 19:45
 */
@RestController
@RequestMapping("/api/file")
public class FileUploadController {
    @PostMapping("/upload")
    public ResultVo upLoadFile(MultipartFile file) throws Exception {
        // 獲取文件原名
        String originalFilename = file.getOriginalFilename();
        // 防止重復上傳文件名重復
        String fileName = null;
        if (originalFilename != null) {
            fileName = UUID.randomUUID() + originalFilename.substring(originalFilename.indexOf("."));
        }
        // 把文件儲存到本地磁盤
//        file.transferTo(new File("E:\\SpringBootBase\\ProjectOne\\big-event\\src\\main\\resources\\flies\\" + fileName));
        String url = AliOssUtil.uploadFile(fileName, file.getInputStream());
        return ResultUtils.success("上傳成功!", url);
    }

    @PutMapping("/upload/{fileName}")
    public ResultVo deleteFile(@PathVariable("fileName") String fileName) {
        System.out.println(fileName);
        if (fileName != null) {
            return AliOssUtil.deleteFile(fileName);
        }
        return ResultUtils.success("上傳失?。?);
    }
}

AliOssUtil.java


package com.zhx.app.utils;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.io.InputStream;

/**
 * @ClassName : AliOssUtil
 * @Description : 阿里云上傳服務
 * @Author : zhx
 * @Date: 2024-03-1 20:29
 */
@Component
public class AliOssUtil {
    private static String ENDPOINT;
    @Value("${alioss.endpoint}")
    public void setENDPOINT(String endpoint){
        ENDPOINT = endpoint;
    }
    private static String ACCESS_KEY;
    @Value("${alioss.access_key}")
    public void setAccessKey(String accessKey){
        ACCESS_KEY = accessKey;
    }
    private static String ACCESS_KEY_SECRET;
    @Value("${alioss.access_key_secret}")
    public void setAccessKeySecret(String accessKeySecret){
        ACCESS_KEY_SECRET = accessKeySecret;
    }
    private static String BUCKETNAME;
    @Value("${alioss.bucketName}")
    public void setBUCKETNAME(String bucketName){
        BUCKETNAME = bucketName;
    }

    public static String uploadFile(String objectName, InputStream inputStream) {
        String url = "";
        // 創(chuàng)建OSSClient實例。
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY, ACCESS_KEY_SECRET);
        try {
            // 創(chuàng)建PutObjectRequest對象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(BUCKETNAME, objectName, inputStream);
            // 如果需要上傳時設置存儲類型和訪問權(quán)限,請參考以下示例代碼。
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);

            // 上傳文件。
            PutObjectResult result = ossClient.putObject(putObjectRequest);
            url = "https://" + BUCKETNAME + "." + ENDPOINT.substring(ENDPOINT.lastIndexOf("/") + 1) + "/" + objectName;
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        }  finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return url;
    }
    public static ResultVo deleteFile(String objectName) {
        // 創(chuàng)建OSSClient實例。
        OSS ossClient = new OSSClientBuilder().build(ENDPOINT, ACCESS_KEY, ACCESS_KEY_SECRET);
        try {
            // 刪除文件。
             ossClient.deleteObject(BUCKETNAME, objectName);
             return ResultUtils.success("刪除成功!");
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return ResultUtils.error("上傳失??!");
    }
}

到了這里,關(guān)于SpringBoot3 + uniapp 對接 阿里云0SS 實現(xiàn)上傳圖片視頻到 0SS 以及 0SS 里刪除圖片視頻的操作(最新)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 前端上傳圖片到阿里云(pc端和uniapp小程序)

    前端上傳圖片到阿里云(pc端和uniapp小程序)

    官方文檔JavaScript客戶端簽名直傳 如果前端是原生的html寫的話,就去官網(wǎng)下載示例來看,把文件里面的配置修改成子阿里云的配置就好 客戶端進行表單直傳到OSS時,會從瀏覽器向OSS發(fā)送帶有Origin的請求消息。OSS對帶有Origin頭的請求消息會進行跨域規(guī)則(CORS)的驗證,因此需

    2024年02月06日
    瀏覽(21)
  • 對接YouTube平臺實現(xiàn)上傳視頻——Java實現(xiàn)

    對接YouTube平臺實現(xiàn)上傳視頻——Java實現(xiàn)

    前段時間公司要求對接海外YouTube平臺實現(xiàn)視頻上傳的功能,由于海外文檔描述不詳細,且本人英語功底不好,過程中踩了很多坑,寫出這篇文章出來希望能幫助到有需要的人。 開發(fā)環(huán)境 :idea 、jdk1.8、maven 開發(fā)準備 : 需要一個Google賬號 需要登錄到Google控制臺創(chuàng)建應用開啟

    2024年02月11日
    瀏覽(23)
  • uniapp 上傳視頻到阿里云之后回顯視頻獲取視頻封面

    uniapp 上傳視頻到阿里云之后回顯視頻獲取視頻封面

    1.initial-time Number 指定視頻初始播放位置,單位為秒(s)。 沒什么卵用 2.使用 uni.createVideoContext(“myVideo”, this).seek(number)。 沒什么卵用 t_1000 等于截取視頻第 1秒作為封面

    2024年04月11日
    瀏覽(20)
  • 【SpringBoot】文件上傳到阿里云

    實例:蒼穹外賣 oss 相關(guān)配置: application.yml application-dev.yml(這里不用橫杠分隔,用駝峰命名也是可以的,SpringBoot會自動轉(zhuǎn)換) 配置屬性類AliOssProperties : AliOssUtil : OssConfiguration : 文件上傳Controller

    2024年02月03日
    瀏覽(16)
  • uniapp 上傳靜態(tài)資源-- 微信小程序跟QQ小程序上傳靜態(tài)資源到阿里的對象存儲 OSS

    uniapp 上傳靜態(tài)資源-- 微信小程序跟QQ小程序上傳靜態(tài)資源到阿里的對象存儲 OSS

    這兩天有個需求,要微信小程序跟QQ小程序通過阿里的OSS儲存,存放靜態(tài)資源,遇到了挺多問題,記錄一下~~~ 文檔:此處 其實這個是被誤導了,也怪自己沒有仔細看文檔,不該有這一步,但是做了就記錄一下,正好多了解nodejs環(huán)境與瀏覽器環(huán)境 API的差別。 服務器直傳里面的

    2024年02月09日
    瀏覽(39)
  • springboot3 redis 實現(xiàn)分布式鎖

    分布式鎖介紹 分布式鎖是一種在分布式系統(tǒng)中用于控制不同節(jié)點上的進程或線程對共享資源進行互斥訪問的技術(shù)機制。 在分布式環(huán)境中,多個服務可能同時訪問和操作共享資源,如數(shù)據(jù)庫、文件系統(tǒng)等。為了保持數(shù)據(jù)的一致性和完整性,需要確保在同一時刻只有一個服務能

    2024年04月16日
    瀏覽(23)
  • 【SpringBoot3】使用 devtools 實現(xiàn)代碼熱部署

    Spring Boot DevTools是一組用于提高開發(fā)人員生產(chǎn)力,并加速Spring Boot應用程序開發(fā)的工具。它提供了一些功能,可以幫助開發(fā)人員更快速地構(gòu)建應用程序,并減少常見的開發(fā)問題。 Spring Boot DevTools的主要作用包括: 自動重新加載 :當應用程序中的代碼發(fā)生變化時,DevTools會自動

    2024年01月16日
    瀏覽(17)
  • SpringBoot3集成Kafka優(yōu)雅實現(xiàn)信息消費發(fā)送

    ???????首先,你的JDK是否已經(jīng)是8+了呢? ???????其次,你是否已經(jīng)用上SpringBoot3了呢? ???????最后,這次分享的是SpringBoot3下的kafka發(fā)信息與消費信息。 ???????這次的場景是springboot3+多數(shù)據(jù)源的數(shù)據(jù)交換中心(數(shù)倉)需要消費Kafka里的上游推送信息,這里做數(shù)據(jù)

    2024年02月02日
    瀏覽(29)
  • SpringBoot3整合SpringSecurity,實現(xiàn)自定義接口權(quán)限過濾

    SpringBoot3整合SpringSecurity,實現(xiàn)自定義接口權(quán)限過濾

    接口權(quán)限過濾是指對于某些接口或功能,系統(tǒng)通過設定一定的權(quán)限規(guī)則,只允許經(jīng)過身份認證且擁有相應權(quán)限的用戶或應用程序進行訪問和操作 。這種技術(shù)可以有效地保護系統(tǒng)資源和數(shù)據(jù)安全,防止未授權(quán)的用戶或程序進行惡意操作或非法訪問。通常情況下,接口權(quán)限過濾需

    2024年02月08日
    瀏覽(24)
  • 使用SpringBoot將圖片上傳至阿里云OSS

    使用SpringBoot將圖片上傳至阿里云OSS

    1. 什么是OSS? 官方的解釋是這樣的:阿里云對象存儲OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存儲服務,提供99.9999999999%(12個9)的數(shù)據(jù)持久性,99.995%的數(shù)據(jù)可用性。 官網(wǎng):對象存儲OSS 2. 為什么要使用OSS? 作者認為主要是方便項目上線后的文件業(yè)務的處

    2024年02月06日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包