IMGUR照片上传POST请求

时间:2013-02-03 23:45:44

标签: c# http post request imgur

我想要做的是在这里使用他们的API http://api.imgur.com/endpoints/image#image-upload将照片上传到imgur网站。正如我在文档中读到的那样,图像数据必须是“图像”参数。所以我正在做的是将POST请求数据设置为“image = base64codedfile& title = blabla& type = base64”,它确实上传了它但文件已损坏。如果我的请求只包含“base64codedfile”而没有图像,标题,则输入名称参数就像魅力一样。我做错了吗?

如果我将其设置为:

string postData = "image="+Convert.ToBase64String(image)+"&type=base64&title=test;

图片已损坏

如果它只是原始数据:

string postData = Convert.ToBase64String(image);

它正在运作

整个代码是这样的:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.imgur.com/3/upload.xml");
request.Headers.Add("Authorization", "Client-ID >>myclientid<<");
request.Method = "POST";

string filePath = "d:\\test.jpg";
FileStream file = new FileStream(filePath, FileMode.Open);
byte[] image = new byte[file.Length];
file.Read(image, 0, (int)file.Length);
ASCIIEncoding enc = new ASCIIEncoding();
string postData = Convert.ToBase64String(image);
byte[] bytes = enc.GetBytes(postData);

request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;

Stream writer = request.GetRequestStream();
writer.Write(bytes, 0, bytes.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

2 个答案:

答案 0 :(得分:0)

我也在尝试做同样的事情并且也面临问题......

我有一个解决方案......

上传图片后,使用 response.getresponsestream()获取图片的ID .... 然后使用此ID更新该图像..并且不要忘记使用imgur api更新图像..要了解有关更新imgur图像的更多信息,请访问此link

答案 1 :(得分:0)

我的解决方案:

      using (var reader = new StreamReader(response.GetResponseStream()))
        {
            var objText = reader.ReadToEnd();
        }

在对象文本中,您将找到json响应