如何向Minio上传byte[]?调用PutObjectAsync遇参数错误
解决Minio上传byte[]的报错问题
你的代码尝试直接上传byte[]到Minio,但执行时报错:
One of FileName or ObjectStreamData must be set.
问题出在Minio SDK对数据源的要求上,错误提示里的ObjectStreamData是过时命名,当前版本SDK对应的正确方法是WithStream。你不需要依赖物理文件,只需将byte[]包装成内存流即可,同时要补充指定数据长度。
修正后的代码如下:
public async Task Put(byte[] data) { using var stream = new MemoryStream(data); var args = new PutObjectArgs() .WithBucket("buckethead") .WithObject(Guid.NewGuid().ToString()) .WithStream(stream) .WithObjectSize(data.Length) .WithContentType("application/vnd.ms-excel"); await _client.PutObjectAsync(args); }
注意两个细节:
- 原代码中
Guid.NewGuid.ToString()少了方法调用的括号,正确写法是Guid.NewGuid().ToString() - 必须通过
WithObjectSize指定字节数组的长度,SDK需要这个参数来正确处理上传流
内容的提问来源于stack exchange,提问作者Nick Farsi
相关产品推荐
相关产品推荐

