2010-12-05 4 views
2

아래 코드를 사용하여 imgur.com으로 이미지를 업로드하면 http 400 오류 코드가 반환됩니다. 내 개발자 키가 정확하고 크기가 70kb까지 다른 이미지 형식을 시도했습니다. http://api.imgur.com/examples에 주어진 C#의 코드 예제도 시도했지만 http 400도 제공합니다. 무슨 문제 일 수 있습니까?imgur에 이미지 업로드하기 C#

public XDocument Upload(string imageAsBase64String) 
{ 
    XDocument result = null; 
    using (var webClient = new WebClient()) 
    { 
     var values = new NameValueCollection 
     { 
      { "key", key }, 
      { "image", imageAsBase64String }, 
      { "type", "base64" }, 
     }; 
     byte[] response = webClient.UploadValues("http://api.imgur.com/2/upload.xml", "POST", values); 
     result = XDocument.Load(new MemoryStream(response)); 
    } 
    return result; 
} 

편집 :

[HttpPost] 
public ActionResult UploadImage(HttpPostedFileBase uploadFile) 
{ 
    if (uploadFile.ContentLength > 0) 
    { 
     var imgService = new ImgUrImageService(); 
     byte[] fileBytes = new byte[uploadFile.InputStream.Length]; 
     Int64 byteCount = uploadFile.InputStream.Read(fileBytes, 0, (int)uploadFile.InputStream.Length); 
     uploadFile.InputStream.Close(); 
     string fileContent = Convert.ToBase64String(fileBytes, 0, fileBytes.Length); 
     var response = imgService.Upload(fileContent); 
    } 
    return View(); 
} 
+0

혹시이 기능을 사용하셨습니까? – theChrisKent

+0

아니요, 여전히 동일합니다. 그것은 제가 집에서 작업하고있는 부수적 인 프로젝트입니다. 다른 이미지 서비스를 살펴볼 것입니다. – rovsen

답변

1

나는 이유를 발견했다. 내 web.config 파일의 프록시 설정 (Fiddler 용)이 문제의 원인이었습니다. 그것을 제거하는 것은 문제와 나의 또 다른 문제점을 너무 해결했다 (recaptcha와 관련됨). 코드는 매력처럼 작동합니다.

1

이 당신의 코드를 수정하는 경우 :

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; 
} 

모두가 함께 잘 작동합니다 이것은 ASP.NET MVC 응용 프로그램 및 발신자 컨트롤러 액션이입니다 an ANONYMOUS API 키. 인증 된 API를 사용하려면 고객 키와 고객 비밀번호를 사용하여 OAuth 토큰을 만들어야합니다.

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가 지원되는 곳이 표시되지 않습니다.

+0

Chris가 대답 해 주셔서 감사합니다. 이 코드는 여전히 내 개발자 키를 사용하여 코드 400을 반환합니다. 업로드는 익명의 API 메소드입니다. 따라서 개발자 키가 충분해야합니다. 내 개발자 키가 익명의 키가 아닌가? 로컬 컴퓨터에서 문제가있을 수 있습니까? – rovsen

+0

키를 사용하여 코드를 시도했지만 여전히 동일합니다. 또한 질문을 수정하고 전환 코드를 추가했습니다. – rovsen

+0

변환을 해결하기 위해 내 대답을 업데이트했습니다. – theChrisKent

관련 문제