【问题标题】:Uploading images to Imgur.com using C#使用 C# 将图像上传到 Imgur.com
【发布时间】:2011-01-03 14:12:41
【问题描述】:

我刚刚从 Imgur 收到了我独特的开发者 API 密钥,我渴望开始破解这个宝贝。

首先是一个简单的测试来开始。如何使用 C# 上传图像?我使用 Python 找到了这个:

#!/usr/bin/python

import pycurl

c = pycurl.Curl()
values = [
          ("key", "YOUR_API_KEY"),
          ("image", (c.FORM_FILE, "file.png"))]
# OR:     ("image", "http://example.com/example.jpg"))]
# OR:     ("image", "BASE64_ENCODED_STRING"))]

c.setopt(c.URL, "http://imgur.com/api/upload.xml")
c.setopt(c.HTTPPOST, values)

c.perform()
c.close()

【问题讨论】:

    标签: c# api http-post uploading imgur


    【解决方案1】:

    该网站似乎使用 HTTP Post 来上传图片。查看 HTTPWebRequest 类并使用它来 POST 到 URL:Posting data with HTTPRequest

    【讨论】:

      【解决方案2】:

      Imgur API 现在提供complete c# example

      using System;
      using System.IO;
      using System.Net;
      using System.Text;
      
      namespace ImgurExample
      {
          class Program
          {
              static void Main(string[] args)
              {
                  PostToImgur(@"C:\Users\ashwin\Desktop\image.jpg", IMGUR_ANONYMOUS_API_KEY);
              }
      
              public static void PostToImgur(string imagFilePath, string apiKey)
              {
                  byte[] imageData;
      
                  FileStream fileStream = File.OpenRead(imagFilePath);
                  imageData = new byte[fileStream.Length];
                  fileStream.Read(imageData, 0, imageData.Length);
                  fileStream.Close();
      
                  string uploadRequestString = "image=" + Uri.EscapeDataString(System.Convert.ToBase64String(imageData)) + "&key=" + apiKey;
      
                  HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://api.imgur.com/2/upload");
                  webRequest.Method = "POST";
                  webRequest.ContentType = "application/x-www-form-urlencoded";
                  webRequest.ServicePoint.Expect100Continue = false;
      
                  StreamWriter streamWriter = new StreamWriter(webRequest.GetRequestStream());
                  streamWriter.Write(uploadRequestString);
                  streamWriter.Close();
      
                  WebResponse response = webRequest.GetResponse();
                  Stream responseStream = response.GetResponseStream();
                  StreamReader responseReader = new StreamReader(responseStream);
      
                  string responseString = responseReader.ReadToEnd();
              }
          }
      }
      

      【讨论】:

      • 我之前已经看过这段代码。它对我不起作用,并且您提供的链接也已被删除。 Imgur 告诉我(我问他们)他们将其删除是因为旧示例由于新的 API 而无关紧要。
      【解决方案3】:

      为什么不为此使用 NuGet:称为 Imgur.API 并用于上传 你会有这样的方法:

      /*
         The refresh token and all the values represented by constans are given when you allow the application in your imgur panel on the response url
      */
      
      public OAuth2Token CreateToken()
      {
          var token = new OAuth2Token(TOKEN_ACCESS, REFRESH_TOKEN, TOKEN_TYPE, ID_ACCOUNT, IMGUR_USER_ACCOUNT, int.Parse(EXPIRES_IN));
          return token;
      }
      
      //Use it only if your token is expired
      public Task<IOAuth2Token> RefreshToken()
      {
          var client = new ImgurClient(CLIENT_ID, CLIENT_SECRET);
          var endpoint= new OAuth2Endpoint(client);
          var token = endpoint.GetTokenByRefreshTokenAsync(REFRESH_TOKEN);
          return token;
      }
      
      
      public async Task UploadImage()
      {
           try
           {
                var client = new ImgurClient(CLIENT_ID, CLIENT_SECRET, CreateToken());
                var endpoint = new ImageEndpoint(client);
                IImage image;
                //Here you have to link your image location
                using (var fs = new FileStream(@"IMAGE_LOCATION", FileMode.Open))
                {
                   image = await endpoint.UploadImageStreamAsync(fs);
                }
                      Debug.Write("Image uploaded. Image Url: " + image.Link);
               }
               catch (ImgurException imgurEx)
               {
                      Debug.Write("Error uploading the image to Imgur");
                      Debug.Write(imgurEx.Message);
               }
           }
      

      您也可以在这里找到所有参考资料:Imgur.API NuGet

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-19
        • 2011-05-20
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        • 2018-03-02
        • 2015-01-19
        • 2017-04-15
        相关资源
        最近更新 更多