Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将图像从J2ME客户端上载到Servlet_Java_Image_Servlets_Java Me - Fatal编程技术网

Java 将图像从J2ME客户端上载到Servlet

Java 将图像从J2ME客户端上载到Servlet,java,image,servlets,java-me,Java,Image,Servlets,Java Me,我想从J2ME客户机向Servlet发送一个图像 我能够获得图像的字节数组,并使用HTTPPOST发送它 conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true); conn.setRequestMethod(HttpConnection.POST); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); os

我想从J2ME客户机向Servlet发送一个图像

我能够获得图像的字节数组,并使用HTTPPOST发送它

conn = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true);
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
os.write(bytes, 0, bytes.length); // bytes = byte array of image
以下是Servlet代码:

String line;
BufferedReader r1 = new BufferedReader(new InputStreamReader(in));
while ((line = r1.readLine()) != null) {
    System.out.println("line=" + line);
    buf.append(line);
}
String s = buf.toString();
byte[] img_byte = s.getBytes();
但我发现的问题是,当我从J2ME客户端发送字节时,一些字节丢失了。它们的值是
0A
0D
hex。准确地说,回车和换行

因此,POST方法或
readLine()
都不能接受
0A
0D


任何人都知道怎么做,或者如何使用其他方法吗?

这是因为您正在使用
缓冲读取器
逐行读取二进制流。
readLine()。这些单独的行不再包含CRLF

不要对二进制流使用
BufferedReader
,这没有意义。只需将获得的
InputStream
写入任何风格的
OutputStream
,例如
FileOutputStream



也就是说,您使用的
内容类型
在技术上是错误的。您没有在请求正文中发送WWW表单URL编码的值。您正在发送一个二进制流。它应该是
应用程序/octet流
或者可能是
图像
。这不是问题的原因,但它完全是错误的。

这是因为您正在使用
BufferedReader
逐行读取二进制流。
readLine()。这些单独的行不再包含CRLF

不要对二进制流使用
BufferedReader
,这没有意义。只需将获得的
InputStream
写入任何风格的
OutputStream
,例如
FileOutputStream


也就是说,您使用的
内容类型
在技术上是错误的。您没有在请求正文中发送WWW表单URL编码的值。您正在发送一个二进制流。它应该是
应用程序/octet流
或者可能是
图像
。这不是这个问题的原因,但它完全是错误的

InputStream input = null;
OutputStream output = null;

try {
    input = request.getInputStream();
    output = new FileOutputStream("/path/to/file.ext");

    byte[] buffer = new byte[10240];
    for (int length = 0; (length = input.read(buffer()) > 0;) {
        output.write(buffer, 0, length);
    }
} finally {
    if (output != null) output.close();
    if (input != null) input.close();
}