我目前正在为黑莓开发,当我尝试从服务器下载图像时遇到了这个问题。设备与之通信的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();
}
感谢。值得一提的是,我正在开发客户端和服务器端。
答案 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中不应该有任何PNGEncoder
或ImageIcon
代码。您应该以正常"c:\\Users\\dcalderon\\prueba.png"
作为字节读取InputStream
文件,然后将其写入servlet的输出。我认为该文件是PNG图像,.mp3文件还是任何其他内容并不重要。 (尽管您可能需要将内容类型设置为image/png
)。
所以,我会尝试传输图像压缩(就像它存储在磁盘上一样.png)。如果仍然无效,请继续使用 multipart 传输。