java - 以编程方式通过 android 上的 imgur 上传照片

标签 java android upload photo imgur

我需要使用 imgur 的 API 来上传照片并显然检索链接方面的帮助。

IMGUR API: http://api.imgur.com/resources_anon

我能够获取需要上传的图像的 URI,但是如何实现上面的 api, 我已经下载了 mime4j 和 httpmime 并将它们添加到库中,但我似乎不明白如何使用它们,

我看了这个,但它让我困惑: Sending images using Http Post

最佳答案

快速浏览一下 imgurthis question ,我想出了(几乎只是将两者结合起来)以下内容。如果不起作用请告诉我。

Bitmap bitmap = yourBitmapHere;

// Creates Byte Array from picture
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); // Not sure whether this should be jpeg or png, try both and see which works best
URL url = new URL("http://api.imgur.com/2/upload");

//encodes picture with Base64 and inserts api key
String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(Base64.encode(baos.toByteArray(), Base64.DEFAULT).toString(), "UTF-8");
data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(YOUR_API_KEY, "UTF-8");

// opens connection and sends data
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

编辑:看来我们需要将 Base64.DEFAULT 作为第二个选项传递给 Base64.encode。更新了上面的示例。

编辑2:您可以根据the oracle site使用以下代码吗? ,并报告它的输出:

BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            conn.getInputStream()));

String inputLine;

while ((inputLine = ic.readLine()) != null) 
    System.out.println(inputLine);
in.close();

关于java - 以编程方式通过 android 上的 imgur 上传照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111751/

相关文章:

java - JInternalFrame 正在延迟加载?

php - 如何选择多个文件上传?

java - Jetty 通过多部分请求直接将文件上传到 FileInputStream

Java 通过引用传递

java - 如何通过java nio writer覆盖文件?

java - 如何使用 CXF wsdl2java 为在线 WSDL URL 链接生成 WebService 客户端

android - 从 wordpress WP-REST API 获取图片 URL

android - ic_launcher.xml 未用作应用程序图标

android - 使用虚拟场景在 Android 模拟器中扫描条码

asp.net - 在 ASP.net 中上传文件而不使用 FileUpload 服务器控件