【发布时间】:2023-03-17 07:22:01
【问题描述】:
我想实现一个 Java 程序,其中客户端将能够从客户端上传文件(图像、文本等)并将其发送到服务器端,该文件将存储在服务器上的文件夹中计算机。
这可能和现实吗? EJB 是一种更好的方法吗?有没有好的资源?
【问题讨论】:
-
RMI 是一种非常不合适的方法。这是可能的,但不可取。
我想实现一个 Java 程序,其中客户端将能够从客户端上传文件(图像、文本等)并将其发送到服务器端,该文件将存储在服务器上的文件夹中计算机。
这可能和现实吗? EJB 是一种更好的方法吗?有没有好的资源?
【问题讨论】:
以前有人问过这个问题。以下是更多信息的链接 how to upload file to http remote server using java?
【讨论】:
您可以如下在通用包中创建一个类,然后从客户端调用createByteArray()并将图像转换为字节数组。然后将其传递给骨架并使用createBufferedImage() 重建图像。最后,使用toFile()将其保存为JPEG:
/**
*
* @author Randula
*/
public class TransportableImage {
/**
*
* @param bufferedImage
* @return
* @throws IOException
*/
public byte[] createByteArray(BufferedImage bufferedImage)
throws IOException {
byte[] imageBytes = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
JPEGImageEncoder jpg = JPEGCodec.createJPEGEncoder(bos);
jpg.encode(bufferedImage);
bos.flush();
imageBytes = bos.toByteArray();
bos.close();
return imageBytes;
}
//Reconstruct the BufferedImage
public BufferedImage createBufferedImage(byte[] imageBytes)
throws IOException {
InputStream is = new ByteArrayInputStream(imageBytes);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(is);
BufferedImage image = decoder.decodeAsBufferedImage();
is.close();
return image;
}
//Save a JPEG image
public void toFile(File file, byte[] imageBytes)
throws IOException {
FileOutputStream os = new FileOutputStream(file);
os.write(imageBytes, 0, imageBytes.length);
os.flush();
os.close();
}
}
【讨论】:
byte[] 数据的传输,所以剩下的只是通过 RMI 进行对象的广义传输。但你是对的,这可以添加到答案中。