今天接到个需求就是客户端上传文件到Aliyun_oss,因为之前已经使用使用过OSS的sdk 上传过文件本以为是件很容易的事。(本以为。。淦)
这里 我贴上一个Aliyun_oss的介绍网站。里面有阿里云Oss对接的详细说明。https://help.aliyun.com/document_detail/32006.html
OK!事情是这样的。我首先去网络上百度了下C#客户端通过上传文件的各种代码,试了好多他一直在报一个错误: MalformedPOSTRequest
服务层直接返回400
错误消息:The body of your POST request is not well-formed multipart/form-data. 错误原因:PostObject请求中表单域格式不符合要求。 解决方案:遵循表单域格式要求 然后就到Aliyun_OSS错误码对照哪里找相关的错误解决方案 以上是老马给出的解释。细心的我发现了马哥给提供了个c#demo OK!看demo,上demo
var boundary = "9431149156168" ;
var webRequest = ( HttpWebRequest) WebRequest. Create ( requestUri) ;
webRequest. Timeout = - 1 ;
webRequest. Method = "POST" ;
webRequest. ContentType = "multipart/form-data; boundary=" + boundary;
var objectName = "xxx" ;
var signature = ComputeSignature ( accessKeySecret, encPolicy) ;
var fileContent = "这是一行简单的测试文本" ;
var requestBody = "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"key\"\r\n"
+ "\r\n" + "user/eric/${filename}" + "\r\n"
+ "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"bucket\"\r\n"
+ "\r\n" + bucketName + "\r\n"
+ "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"x-oss-meta-tag\"\r\n"
+ "\r\n" + "dummy_etag_xxx" + "\r\n"
+ "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"OSSAccessKeyId\"\r\n"
+ "\r\n" + accessKeyId + "\r\n"
+ "--"