【问题标题】:RMI Client/Server - File TransferRMI 客户端/服务器 - 文件传输
【发布时间】:2023-03-17 07:22:01
【问题描述】:

我想实现一个 Java 程序,其中客户端将能够从客户端上传文件(图像、文本等)并将其发送到服务器端,该文件将存储在服务器上的文件夹中计算机。

这可能和现实吗? EJB 是一种更好的方法吗?有没有好的资源?

【问题讨论】:

  • RMI 是一种非常不合适的方法。这是可能的,但不可取。

标签: java ejb rmi


【解决方案1】:

以前有人问过这个问题。以下是更多信息的链接 how to upload file to http remote server using java?

【讨论】:

  • 这个问题是关于 RMI 的。不是 HTTP。
【解决方案2】:

您可以如下在通用包中创建一个类,然后从客户端调用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();
    }

}

【讨论】:

  • 问题是在RMI中怎么做,你还没回答。
  • 嗯,RMI 支持byte[] 数据的传输,所以剩下的只是通过 RMI 进行对象的广义传输。但你是对的,这可以添加到答案中。
猜你喜欢
  • 1970-01-01
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
相关资源
最近更新 更多