全部產品
Search
文件中心

Object Storage Service:刪除檔案(Swift SDK)

更新時間:Nov 29, 2025

本文介紹如何使用OSS Swift SDK刪除指定的單個檔案和刪除指定的多個檔案。

警告

請您謹慎使用刪除操作,檔案刪除後將無法恢複。

注意事項

  • 本文範例程式碼以華東1(杭州)的地區IDcn-hangzhou為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見地區和Endpoint

  • 要刪除檔案,您必須具有oss:DeleteObject許可權。具體操作,請參見為RAM使用者授予自訂的權限原則

範例程式碼

刪除單個檔案

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        do {
            // Bucket所在地區(樣本:華東1為cn-hangzhou)
            let region = "cn-hangzhou"
            // Bucket名稱
            let bucket = "yourBucketName"
            // 可選項,指定訪問OSS服務的網域名稱。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com
            let endpoint: String? = nil
            // 需要刪除的對象名稱(如:test.txt)
            let key = "yourObjectName"

            // 初始化憑證提供者(從環境變數載入)
            let credentialsProvider = EnvironmentCredentialsProvider()

            // 配置OSS用戶端參數
            let config = Configuration.default()
                .withRegion(region)
                .withCredentialsProvider(credentialsProvider)
                
            // 設定Endpoint
            if let endpoint = endpoint {
                config.withEndpoint(endpoint)
            }

            // 建立OSS用戶端執行個體
            let client = Client(config)

            // 發送刪除對象請求
            let result = try await client.deleteObject(
                DeleteObjectRequest(
                    bucket: bucket,
                    key: key
                )
            )
            print("result:\n\(result)")

        } catch {
            // 輸出錯誤資訊並繼續執行
            print("error:\(error)")
        }
    }
}

刪除指定的多個檔案

import AlibabaCloudOSS
import Foundation

@main
struct Main {
    static func main() async {
        do {
            // 填寫Bucket所在地區(樣本:華東1為cn-hangzhou)
            let region = "cn-hangzhou"
            // 填寫Bucket名稱
            let bucket = "yourBucketName"
            // 可選項,指定訪問OSS服務的網域名稱。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com
            let endpoint: String? = nil
            // 填寫要刪除的多個對象名稱(逗號分隔,如:object1.txt,object2.jpg)
            let objects = "yourObjectName1,yourObjectName2"

            // 初始化憑證提供器(從環境變數載入OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET)
            let credentialsProvider = EnvironmentCredentialsProvider()

            // 配置OSS用戶端參數
            let config = Configuration.default()
                .withRegion(region)        // 設定Bucket所在地區
                .withCredentialsProvider(credentialsProvider)  // 設定訪問憑證
                
            // 設定Endpoint
            if let endpoint = endpoint {
                config.withEndpoint(endpoint)
            }

            // 建立OSS用戶端執行個體
            let client = Client(config)

            // 將對象名稱字串解析為DeleteObject數組
            var deleteObjects: [DeleteObject] = []
            for object in objects.components(separatedBy: ",") {
                deleteObjects.append(DeleteObject(key: object))
            }

            // 執行大量刪除操作
            let result = try await client.deleteMultipleObjects(
                DeleteMultipleObjectsRequest(
                    bucket: bucket,
                    objects: deleteObjects
                )
            )
            print("result:\n\(result)")

        } catch {
            // 輸出錯誤資訊並繼續執行
            print("error:\(error)")
        }
    }
}

常見問題

使用Swift SDK刪除單個檔案後,如何確定檔案是否已成功刪除?

在OSS Swift SDK中使用OSSClientdeleteObject方法刪除單個檔案時,如果該方法沒有拋出異常,則說明已成功刪除該檔案。如果您需要進一步確認該檔案是否已成功刪除,可以調用OSSClientdoesObjectExist方法,該方法可以判斷指定的檔案是否存在。如果該方法返回false,則說明該檔案已成功刪除。更多資訊,請參見判斷檔案是否存在(Swift SDK)

相關文檔