問題描述
在使用.NET SDK通過MemoryStream方法上傳檔案時,由於MemoryStream預設檔案指標的當前位置是流的尾部,檔案可以上傳成功,但是檔案的大小為0。
解決方案
-
在上傳檔案之前使用
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); } -
確認通過MemoryStream方法上傳檔案時,可以顯示檔案大小。