var client = new OssClient(_endpoint, _accessKeyId, _accessKeySecret);
try
{
var meta = new ObjectMetadata();
meta.ContentType = "image/jpeg";
meta.ContentLength = picture.ContentLength;
var result = client.PutObject(_bucketName, "/Image", picture.InputStream, meta);//上传图片
Console.WriteLine("ETag:{0}", result.ETag);
}
catch (Exception ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}
报错: 无效的对象键。 它的长度必须在1到1023之间。\ r \ n参数名:key
求解决
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到错误“无效的对象键。它的长度必须在1到1023之间。”主要是因为您尝试上传的OSS对象键(即文件路径)不符合长度要求。根据错误提示,对象键长度需在1到1023个字符之间。在您的代码中,对象键被设置为"/Image"
。
检查对象键长度:确认"/Image"
后面没有意外的空格或其他不可见字符导致长度超出限制。虽然当前示例看似符合长度要求,但请确保实际使用中无隐含问题。
路径格式调整:如果"/Image"
是打算作为目录来使用以存储图片,OSS中并不存在物理目录概念,而是通过对象键模拟目录结构。因此,上传时应直接使用具体的文件名作为对象键,或在对象键中指定类似目录的前缀,如"Image/图片名称.jpg"
。
修改上传代码中的对象键部分,例如:
var objectKey = $"Image/{picture.FileName}";
var result = client.PutObject(_bucketName, objectKey, picture.InputStream, meta);
验证文件名长度:如果picture.FileName
的长度加上"Image/"
前缀后超过了1023个字符,您需要缩短文件名或调整上传策略以适应长度限制。
/
来模拟目录结构,实际上并没有真实的目录层级,所有对象都直接存储在Bucket下。按照上述建议调整后,重新尝试上传操作,应该可以解决您遇到的问题。
你好,我是AI助理
可以解答问题、推荐解决方案等