Java 如何在不写入内存节点的情况下从请求体写入图像文件

Java 如何在不写入内存节点的情况下从请求体写入图像文件,java,android,node.js,image,express,Java,Android,Node.js,Image,Express,我正在尝试(HTTP)向使用Express配置的Nodejs服务器发布一个映像。我已经能够使用JSON成功地实现这一点,但除非我弄错了,否则在将图像字符串解析为JSON之前,如果不将整个请求体加载到新变量中,就无法获得图像字符串。由于图像非常大,而且无论如何图像都应该存储在请求正文中,是否有方法立即将图像内容通过管道传输到fs.writeFile()?请求的内容类型不必是JSON。我也尝试过使用查询字符串,但没有成功。内容类型不能只是一个图像,因为我还必须为图像添加一个标记(在本例中是用户的电子

我正在尝试
(HTTP)向使用Express配置的Nodejs服务器发布一个映像。我已经能够使用JSON成功地实现这一点,但除非我弄错了,否则在将图像字符串解析为JSON之前,如果不将整个请求体加载到新变量中,就无法获得图像字符串。由于图像非常大,而且无论如何图像都应该存储在请求正文中,是否有方法立即将图像内容通过管道传输到
fs.writeFile()
?请求的内容类型不必是JSON。我也尝试过使用查询字符串,但没有成功。内容类型不能只是一个图像,因为我还必须为图像添加一个标记(在本例中是用户的电子邮件地址)

以下是我尝试使用查询字符串时的代码。它位于express应用程序的post route方法中:

fs.writeFile('profiles/images/user.png', new Buffer(req.body.image, 'base64'), 
    function(error) 
    {           
        if (error)
            res.end(error);
    }
);
没有发生错误,代码创建了.png文件,但该文件不知何故已损坏,并且比应该的大

所有这些实际上都是针对Android应用程序的,因此下面是我用来发送请求的Java代码:

URLConnection connection = new URL(UPLOAD_PICTURE_URL).openConnection();
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;");
connection.setDoOutput(true);

String image = Base64.encodeToString(
                   IOUtils.toByteArray(new FileInputStream(filePath)), 
                   Base64.NO_WRAP
               );

OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("email=" + email + "&image=" + image);
out.close();
也许这属于另一个主题,但按照同样的思路,有人知道用base64编码将android代码中的文件输入流直接传输到
URLConnection
的输出流的方法吗?我已经尝试过写入字符串文本(上面的
out.write()
行),然后创建
Base64OutputStream
来写入映像,然后将该映像传输到
URLConnection
的outputstream中,但在执行此操作后在节点应用程序中调用
req.body.image
,只返回未定义的。最后,有人知道当用作输入/输出流构造函数的输入参数时,是否在Android端将整个字节数组写入内存?如果是这样,有没有办法避免这种情况

提前谢谢