【发布时间】:2015-12-04 10:43:00
【问题描述】:
这些是本文https://developer.amazon.com/public/apis/experience/cloud-drive/content/nodes中的行
我想用这个解释上传视频
上传文件 上传文件内容及其元数据信息。
POST : {{contentUrl}}/nodes?suppress={suppress}
抑制:(可选)
重复数据删除:上传时禁用重复检查 机身参数:
多格式部分
--------- 元数据 ------------
name(必需):文件名。最多 256 个字符。 种类(必填):“文件” 标签(可选):被索引的额外信息。例如,该值可以是“PHOTO” properties(可选):要为文件添加的属性列表。 parents(optional) : 父 ID 列表。如果未提供父文件夹,则文件将放置在默认根文件夹中。 ---------内容------------
文件字节
样品请求:
POST /cdproxy/nodes?localId=testPhoto HTTP/1.1 主机:content-na.drive.amazonaws.com 授权:承载 Atza|IQEBLjAsAhReYeezFcFdYzqrFOJGv3EG
----WebKitFormBoundaryE19zNvXGzXaLvS5C 内容处置:表单数据;名称="元数据"
{"name":"fooo.jpg","kind":"FILE"} ----WebKitFormBoundaryE19zNvXGzXaLvS5C 内容处置:表单数据;名称=“内容”; 文件名="db5df4870e4e4b6cbf42727fd434701a.jpg" 内容类型:image/jpeg
----WebKitFormBoundaryE19zNvXGzXaLvS5C
cURL 请求:
curl -v -X POST --form 'metadata={"name":"testVideo1","kind":"FILE"}' --form '内容=@sample_iTunes.mp4' 'https://content-na.drive.amazonaws.com/cdproxy/nodes?localId=testVideo1&suppress=deduplication' --header "授权:承载 Atza|IQEBLjAsAhQ5zx7pKp9PCgCy6T1JkQjHHOEzpwIUQM"
我在 C# 中编写了以下代码 //FileName 1: 来自计算机的文件 //FileName 2:要在亚马逊云上命名的文件。
if (AccessCode == null)
{
return ;
}
WebRequest request = WebRequest.Create(EndPointUrl+"//+&suppress=deduplication'");
request.Method = "POST";
string code = "Bearer " + AccessCode;
request.Headers.Add("Authorization", code);
string postData =@"Content-Disposition: form-data; name=""metadata"" {""name"":"""+FileName1+@""",""kind"":""+FILE""}
Content-Disposition: form-data; name=""content"";
filename="""+FileName2+@"""
Content-Type: video/wmv";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine(responseFromServer);
reader.Close();
dataStream.Close();
response.Close();
问题是我无法正确翻译。它给出了 404 错误。
{"message":"资源不存在。"}
请帮助我理解它。
【问题讨论】:
-
它是一个普通的
multipart/form-dataPOST 请求,第一个参数值为StringifiedJSON 对象,第二个是图像文件 -
所以会有两个标题?
-
不会有两个多部分的请求。我建议您使用 .NET 4.5 及更高版本中提供的新 HttpClient APi。
标签: c# rest webrequest