最近需要用到浏览器端到OSS服务器的直接上传下载功能。用C#做了个demo,代码如下: try
{
ObjectMetadata metadata = new ObjectMetadata();
// 可以设定自定义的metadata。
metadata.UserMetadata.Add("myfield", "test");
OssClient ossClient = new OssClient(new Uri("http://oss-cn-qingdao.aliyuncs.com/"), accessId, accessKey); // 青岛数据中心
//OssClient ossClient = new OssClient(accessId, accessKey); // 杭州数据中心
//*
//<-----------------------------URL Start--------------------------------
AccessControlList accs = ossClient.GetBucketAcl(bucketName);
string imgurl = string.Empty;
SignHttpMethod method = new SignHttpMethod();
if(methodType == 0) // 根据传入参数判断生成胡 uri类型
method = SignHttpMethod.Get;
else
method = SignHttpMethod.Put;
//if (!accs.Grants.Any())
{
GeneratePresignedUriRequest request = new GeneratePresignedUriRequest(bucketName, key, method);
int time = 0;
int.TryParse(delaytime, out time);
request.Expiration = DateTime.Now.AddSeconds(time); // 有效时间 ,单位 秒
imgurl = ossClient.GeneratePresignedUri(request).AbsoluteUri;
MessageBox.Show("方法为:" method " 有效时间为(秒):=" time);
}
// else
{
// imgurl = string.Format("http://{0}.oss.aliyuncs.com/{1}", bucketName, key);
}
//context.Response.Write(String.Format("{0}|{1}|{2}|{3}", imgurl, imgurl, imgurl, key));
//------------------------------URL END---------------------------------->
//*/
return imgurl.ToString();
}
catch (AggregateException ex)
{
throw ex;
}
下载功能都正常,但是上传得时候老是返回
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
<StringToSignBytes>47 45 54 0A 0A 0A 31 33 39 33 32 30 35 33 38 35 0A 2F 73 69 75 69 62 75 63 6B 65 74 31 2F 31 32 33 2E 74 78 74</StringToSignBytes>
<SignatureProvided>aN3L9ODePhNqQoIHrrtThVEaHUo=</SignatureProvided>
<StringToSign>GET 1393205385 /siuibucket1/123.txt</StringToSign>
<OSSAccessKeyId>QAWi14lIVk1DI3pp</OSSAccessKeyId>
<RequestId>530AA056236AAA280251D094</RequestId>
<HostId>siuibucket1.oss-cn-qingdao.aliyuncs.com</HostId>
</Error>
求解释?从代码能看到,上传下载都是用了同一个流程来签名,SignatureDoesNotMatch怎么会单单上传出现这个问题?
注:由于没有指定上传文件本地路径,我的上传文件和我的exe放在一个目录
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。