繁体   English   中英

使用Java将图像上传到ima​​geshack

[英]Uploading image to imageshack using Java

我无法使用以下代码使用Java将图像上传到ima​​geshack。 我得到的答复是http拒绝了我的连接。 我认为我的问题是如何给图像文件,因为我不确定它是否应该是base64,byteArray等。

任何帮助将是巨大的,谢谢。

public String ImageShack (String imageDir, String myKey) {

    //set file
    BufferedImage image = null;
    File file = new File(imageDir);

    //Set namevalue pairs
    List<NameValuePair> params = new ArrayList<NameValuePair>();

    try
    {
        image = ImageIO.read(file);
        ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
        ImageIO.write(image, "png", byteArray);
        byte[] byteImage = byteArray.toByteArray();
        String dataImage = new Base64().encodeAsString(byteImage);

        //Assign name valued pars
        params.add(new BasicNameValuePair("key", myKey));
        params.add(new BasicNameValuePair("fileupload", dataImage));
        params.add(new BasicNameValuePair("format", "json"));

        //Create HTTPClient and Client
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://www.imageshack.us/upload_api.php");

        //set entities
       httpPost.setEntity(new UrlEncodedFormEntity(params));

        //Execute & get response
        HttpResponse response = httpClient.execute(httpPost);
        return response.toString();

    }
    catch(Exception e)
    {
            return "Error: " + e.getMessage();
}
}

我发现了一个类似的问题,不仅仅是针对网站的imageshack,但以下是其解决方案中的代码:

BufferedImage img = ImageIO.read(new File("temp.jpg"));             
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", baos);
baos.flush();
Base64 base = new Base64(false);
String encodedImage = base.encodeToString(baos.toByteArray());
baos.close();
encodedImage = java.net.URLEncoder.encode(encodedImage, "ISO-8859-1");
request.setRequestBody(encodedImage); 

这是上面提到问题 本文对图像/ Base64编码字符串转换也可能是有益的,如果这是你的问题的根源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM