当前位置: 首页 > 面试题库 >

您如何将发送到服务器的同一映像下载回客户端?

施知
2023-03-14
问题内容

我有两个项目;一个用于我的服务器,另一个用于我的客户端,我能够轻松地将图像发送到服务器。但是我想知道,当我按下在客户端GUI上创建的下载按钮时,如何将刚刚发送到服务器的映像重新下载回客户端?我的代码是用Java编写的。

非常感谢

这是我的服务器处理程序

    String fileName;
        fileName = "RecievedImageoutreach1.jpg";
        DataOutputStream dout = new DataOutputStream(sock.getOutputStream());

//Coding for image transfer 
        int flag=0,i; 
        String extn=""; 
            for(i=0; i<fileName.length(); i++) 
            { 
                if(fileName.charAt(i)=='.' || flag==1) 
                { 
                flag=1; 
                extn += fileName.charAt(i); 
                } 
            }

            if(extn.equals(".jpg") || extn.equals(".gif")) 
                {
                try{

                    File file = new File(fileName); 
                    FileInputStream fin = new FileInputStream(file);    
                    dout.writeUTF(fileName);  
                    byte[] readData = new byte[1024];

                    while((i = fin.read(readData)) != -1) 
                            { 
                            dout.write(readData, 0, i); 
                            }  
                            //ta.appendText("\nImage Has Been Sent");

                            dout.flush();
                            fin.close(); 
                    }catch(IOException ex)
                      {System.out.println("Image ::"+ex);}

                }

    }

这是我的客户

   public void download() throws IOException {
    // Get input from the server

    DataInputStream dis = new DataInputStream (sock.getInputStream()); 
    String str,extn = ""; 
    str = dis.readUTF();

    int flag=0,i;

        for(i=0;i<str.length();i++) 
        {

            if(str.charAt(i)=='.' || flag==1) 
            { 
            flag=1; 
            extn+=str.charAt(i); 
            }
        }

// ***阅读图片*** * //

       if(extn.equals(".jpg") || extn.equals(".gif")) 
          {             
            File file = new File("Downloaded"+str); 
            FileOutputStream fout = new FileOutputStream(file);

            //receive and save image from client 
            byte[] readData = new byte[1024]; 
            while((i = dis.read(readData)) != -1) 
            {
                fout.write(readData, 0, i); 
                if(flag==1) 
                { 
                ta.append("Image Has Been Downloaded"); 
                flag=0; 
                } 
            } 
        fout.flush(); 
        fout.close();

          } 
}

但是运行时什么也没发生?我已经链接了单击按钮时要运行的客户端方法。


问题答案:

我会做这样的事情:

//服务器处理程序

 File file = new File(fileName); 
 FileInputStream fin = new FileInputStream(file);    
// dout.writeUTF(fileName); 
   byte[] readData = new byte[1024]; 
   fin.read(readData);  
   fin.close();
   dout.write(readData, 0, readData.length); 
   dout.flush();

  /* while((i = fin.read(readData)) != -1) 
   { 
       dout.write(readData, 0, i); 
   }*/  
                        //ta.appendText("\nImage Has Been Sent");

                        dout.flush();
                        fin.close(); 
                }catch(IOException ex)
                  {System.out.println("Image ::"+ex);}

            }

//接收图片

if(extn.equals(".jpg") || extn.equals(".gif")) 
      {   
        //give path to new file
        File file = new File(".//Downloaded"+str); 
        FileOutputStream fout = new FileOutputStream(file);

        //receive and save image from client 
        byte[] readData = new byte[1024]; 
        int offset =0; 
        while((i = dis.read(readData,0,readData.length-offset)) != -1){
              offset += i;
        }

            fout.write(readData, 0, readData.length); 
            if(flag==1) 
            { 
            ta.append("Image Has Been Downloaded"); 
            flag=0; 
            }

    fout.flush(); 
    fout.close();

      } 
}


 类似资料:
  • 我正在Unity中制作一个游戏,我试图将数据从客户端发送到服务器并返回到客户端(试图保存实例),但当我收到数据并尝试将数据发送回客户端时,它表示udp客户端未连接。 它成功地将数据从我的Unity客户端发送到服务器,但一旦它到达那里,套接字就会断开连接,我就无法返回任何内容。正如你所看到的,我试图设置一些多播选项,但它似乎不能正常工作。 客户: 服务器: 因此,服务器中UdpClient的实例会保

  • 我必须向服务器发送一个映像(我认为最好的选择是使用HttpURLConnection)并从它接收一个字符串答案。在我读过的不同的文档和web站点中,我研究了这样做的最佳方法是使用多伙伴关系。 1_做它是最好的解决方案吗? 2_我有一个错误,说Android Studio无法解析符号'multipartentity'。我读到,要解决它,我必须下载外部库。哪些是它们,我如何下载它们? 3_为此,我想在

  • 问题内容: 我正在尝试使用HttpUrlConnection将图像发送到服务器,因为它是Google推荐的。我决定将图像转换为Base64字符串,然后将其发送到服务器,然后将其解码为.jpg文件。但是这种方法仅适用于小尺寸缩略图,而我无法发送全尺寸图像。 这是android客户端代码: Node.js服务器代码: 由于BufferedWriter的大小限制,我无法对完整尺寸的图像使用相同的方法-b

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 我正在编写一个基于UDP的客户端服务器,并且已经获得了很多代码,但是我对UDP服务器如何将响应发送回UDP客户端感到困惑,这是我到目前为止的理解: 假设UDP客户端希望与UDP服务器通信,因此它将向UDP服务器发送请求(使用在客户端打开的UDP套接字),现在这将到达UDP服务器上的UDP模块,其中UDP模块将使用端口号标识UDP服务,并将该请求发送到该UDP服务/服务器 我的困惑是,在服务器端,有

  • 我正在用java开发一个ServerSocket,我想知道,在客户端连接时,是否有可能将客户端/套接字发送到另一个ServerSocket。例如,一个客户端连接到123.41.67.817(只是一个随机IP),在连接时,客户端被直接发送到例如124.51.85.147(另一个随机IP),当然还有一个端口。所以一个会发生什么的小地图。 服务器套接字(侦听连接)< br> 客户端- 这有可能吗?抱歉问