问题描述
在使用.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方法上传文件时,可以显示文件大小。
该文章对您有帮助吗?