如何从服务器获取太大的图像?

时间:2012-08-28 22:23:52

标签: java servlets blackberry client-server

我目前正在为黑莓开发,当我尝试从服务器下载图像时遇到了这个问题。设备与之通信的servlet正常工作,因为我已经为它做了一些测试。但它给了我

  

413 HTTP错误(“请求实体太大”)。

我想我会得到字节,嗯,逐个部分。我怎么能做到这一点?

这是servlet的代码(doGet()方法):

try {
    ImageIcon imageIcon = new ImageIcon("c:\\Users\\dcalderon\\prueba.png");

    Image image = imageIcon.getImage();
    PngEncoder pngEncoder = new PngEncoder(image, true);
    output.write(pngEncoder.pngEncode());

} finally {            
    output.close();        
}

感谢。值得一提的是,我正在开发客户端和服务器端。

2 个答案:

答案 0 :(得分:1)

我不知道服务器端代码。您可以查看此链接以了解如何使用multipart上传文件以支持大文件上传

它也适用于黑莓,需要进行一些修改。

http://www.developer.nokia.com/Community/Wiki/HTTP_Post_multipart_file_upload_in_Java_ME

答案 1 :(得分:0)

我不熟悉您正在使用的PNGEncoder类,但只是查看您的servlet代码,以及您对请求大小(2.2 MB)所做的评论,我猜这部分您的问题是,您解压缩图片,然后通过网络传输。

我认为你的servlet中不应该有任何PNGEncoderImageIcon代码。您应该以正常"c:\\Users\\dcalderon\\prueba.png"作为字节读取InputStream文件,然后将其写入servlet的输出。我认为该文件是PNG图像,.mp3文件还是任何其他内容并不重要。 (尽管您可能需要将内容类型设置为image/png)。

所以,我会尝试传输图像压缩(就像它存储在磁盘上一样.png)。如果仍然无效,请继续使用 multipart 传输。