All Products
Search
Document Center

Object Storage Service:Menangani upload MemoryStream yang menghasilkan file nol-byte

Last Updated:Apr 25, 2026

Permasalahan

Saat menggunakan .NET SDK untuk mengupload file dari MemoryStream, operasi upload mungkin berhasil, tetapi file yang dihasilkan di OSS memiliki ukuran 0 byte. Masalah ini terjadi karena penulisan data ke MemoryStream memindahkan penunjuk aliran ke akhir stream.

Solusi

  1. Sebelum meneruskan aliran ke metode upload, atur ulang penunjuk aliran ke awal dengan memanggil mStream.Seek(0, SeekOrigin.Begin);.

    public static void MemStreamUpload()
    {
        Uri endPoint = new Uri("http://oss-cn-beijing.aliyuncs.com");
        string accessKeyID = "your_access_key_id";
        string accessKeySecret = "your_access_key_secret";
        string bucketName = "your_bucket_name";
        string key = "ossobject.jpg";
        string filepath = @"D:\1.jpg";
    
        ObjectMetadata metadata = new ObjectMetadata();
        // Anda dapat mengatur metadata kustom.
        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. Verifikasi bahwa file yang diupload memiliki ukuran yang benar.