全部產品
Search
文件中心

Object Storage Service:使用.NET SDK通過MemoryStream方法上傳檔案到OSS時大小為空白的解決方案

更新時間:Apr 25, 2026

問題描述

在使用.NET SDK通過MemoryStream方法上傳檔案時,由於MemoryStream預設檔案指標的當前位置是流的尾部,檔案可以上傳成功,但是檔案的大小為0。

解決方案

  1. 在上傳檔案之前使用mStream.Seek(0, SeekOrigin.Begin);讓檔案指標歸零,程式碼範例如下所示。

    public static void MemStreamUpload()
    {
        Uri endPoint = new Uri("http://oss-cn-beijing.aliyuncs.com");
        string accessKeyID = xxx;
        string accessKeySecret = xxx;
        string bucketName = "youkou";
        string key = "ossobject.jpg";
        string filepath = @"D:\1.jpg";
    
        ObjectMetadata metadata = new ObjectMetadata();
        // 可以設定自訂的metadata
        metadata.UserMetadata.Add("myfield", "test");
    
        OssClient ossClient = new OssClient(endPoint, accessKeyID, accessKeySecret);
    
        MemoryStream mStream = new MemoryStream();
        Image image = Image.FromFile(filepath);
        image.Save(mStream, ImageFormat.Jpeg);
    
        mStream.Seek(0, SeekOrigin.Begin);
    
        PutObjectResult putObjectResult = ossClient.PutObject(bucketName, key, mStream, metadata);
        Console.WriteLine(putObjectResult.ETag);
    }
  2. 確認通過MemoryStream方法上傳檔案時,可以顯示檔案大小。