Если вы измените свой код следующим образом:
public XDocument Upload(string imageAsBase64String)
{
XDocument result = null;
using (var webClient = new WebClient())
{
var values = new NameValueCollection
{
{ "key", key },
{ "image", imageAsBase64String }
};
byte[] response = webClient.UploadValues("http://api.imgur.com/2/upload.xml", "POST", values);
result = XDocument.Load(System.Xml.XmlReader.Create(new MemoryStream(response)));
}
return result;
}
Все будет хорошо работать с АНОНИМНЫМ ключом API. Чтобы использовать аутентифицированный API, вам нужно будет создать токен OAuth, используя ваш Consumer Key и Consumer Secret.
Imgur имеет дополнительную информацию о необходимых конечных точках и некоторые ссылки на дополнительную помощь здесь: http://api.imgur.com/auth
Ваш код конверсии выглядит в основном нормально, я немного его изменил:
[HttpPost]
public ActionResult UploadImage(HttpPostedFile uploadFile)
{
if (uploadFile.ContentLength > 0)
{
var imgService = new ImgUrImageService();
byte[] fileBytes = new byte[uploadFile.ContentLength];
uploadFile.InputStream.Read(fileBytes, 0, fileBytes.Length);
uploadFile.InputStream.Close();
string fileContent = Convert.ToBase64String(fileBytes);
var response = imgService.Upload(fileContent);
}
return View();
}
В исходном коде загрузки вы добавляете дополнительное значение типа, вы все еще добавляете его или изменили свой код в соответствии с моим измененным кодом выше? Я не вижу причин для добавления этого значения и не вижу, где оно поддерживается с помощью imgur.