「java文件接收功能」java接收http文件流信息

博主:adminadmin 2023-03-20 18:01:06 1017

今天给各位分享java文件接收功能的知识,其中也会对java接收http文件流信息进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java socket编程,客户端发送文件给服务器,服务器接收到文件后如何返回确认信息告诉客户端文件已接收

import java.io.BufferedReader;  

import java.io.File;  

import java.io.FileNotFoundException;  

import java.io.FileOutputStream;  

import java.io.IOException;  

import java.io.InputStream;  

import java.io.InputStreamReader;  

import java.net.ServerSocket;  

import java.net.Socket;  

  

  

/** 

 *  

 * 文件名:ServerReceive.java 

 * 实现功能:作为服务器接收客户端发送的文件 

 *  

 * 具体实现过程: 

 * 1、建立SocketServer,等待客户端的连接 

 * 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据 

 *      其中保存客户端要发送的文件名和文件大小信息 

 * 3、根据文件名在本地创建文件,并建立好流通信 

 * 4、循环接收数据包,将数据包写入文件 

 * 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件 

 * 6、文件接收工作结束 

 *  

 *  

 * 【注:此代码仅为演示客户端与服务器传送文件使用, 

 *      每一个数据包之前没有文件协议命令 

 *      具体的协议传输和文件传出的使用阶段可根据自己程序自行放置】 

 *  

 *  

 * 作者:小菜鸟 

 * 创建时间:2014-08-19 

 *  

 * */  

  

  

  

  

public class ServerReceive {  

  

    public static void main(String[] args) {  

          

        /**与服务器建立连接的通信句柄*/  

        ServerSocket ss = null;  

        Socket s = null;  

          

        /**定义用于在接收后在本地创建的文件对象和文件输出流对象*/  

        File file = null;  

        FileOutputStream fos = null;  

          

        /**定义输入流,使用socket的inputStream对数据包进行输入*/  

        InputStream is = null;  

          

        /**定义byte数组来作为数据包的存储数据包*/  

        byte[] buffer = new byte[4096 * 5];  

          

        /**用来接收文件发送请求的字符串*/  

        String comm = null;  

          

          

        /**建立socekt通信,等待服务器进行连接*/  

        try {  

            ss = new ServerSocket(4004);  

            s = ss.accept();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }  

          

          

        /**读取一行客户端发送过来的约定信息*/  

        try {  

            InputStreamReader isr = new InputStreamReader(s.getInputStream());  

            BufferedReader br = new BufferedReader(isr);  

            comm = br.readLine();  

        } catch (IOException e) {  

            System.out.println("服务器与客户端断开连接");  

        }  

          

        /**开始解析客户端发送过来的请求命令*/  

        int index = comm.indexOf("/#");  

          

        /**判断协议是否为发送文件的协议*/  

        String xieyi = comm.substring(0, index);  

        if(!xieyi.equals("111")){  

            System.out.println("服务器收到的协议码不正确");  

            return;  

        }  

          

        /**解析出文件的名字和大小*/  

        comm = comm.substring(index + 2);  

        index = comm.indexOf("/#");  

        String filename = comm.substring(0, index).trim();  

        String filesize = comm.substring(index + 2).trim();  

          

          

        /**创建空文件,用来进行接收文件*/  

        file = new File(filename);  

        if(!file.exists()){  

            try {  

                file.createNewFile();  

            } catch (IOException e) {  

                System.out.println("服务器端创建文件失败");  

            }  

        }else{  

            /**在此也可以询问是否覆盖*/  

            System.out.println("本路径已存在相同文件,进行覆盖");  

        }  

          

        /**【以上就是客户端代码中写到的服务器的准备部分】*/  

          

          

        /** 

         * 服务器接收文件的关键代码*/  

        try {  

            /**将文件包装到文件输出流对象中*/  

            fos = new FileOutputStream(file);  

            long file_size = Long.parseLong(filesize);  

            is = s.getInputStream();  

            /**size为每次接收数据包的长度*/  

            int size = 0;  

            /**count用来记录已接收到文件的长度*/  

            long count = 0;  

              

            /**使用while循环接收数据包*/  

            while(count  file_size){  

                /**从输入流中读取一个数据包*/  

                size = is.read(buffer);  

                  

                /**将刚刚读取的数据包写到本地文件中去*/  

                fos.write(buffer, 0, size);  

                fos.flush();  

                  

                /**将已接收到文件的长度+size*/  

                count += size;  

                System.out.println("服务器端接收到数据包,大小为" + size);  

            }  

              

        } catch (FileNotFoundException e) {  

            System.out.println("服务器写文件失败");  

        } catch (IOException e) {  

            System.out.println("服务器:客户端断开连接");  

        }finally{  

            /** 

             * 将打开的文件关闭 

             * 如有需要,也可以在此关闭socket连接 

             * */  

            try {  

                if(fos != null)  

                    fos.close();  

            } catch (IOException e) {  

                e.printStackTrace();  

            }//catch (IOException e)  

        }//finally  

  

    }//public static void main(String[] args)  

}//public class ServerReceive

用java怎么实现从前端接收、处理并传回视频?

1、接收前端上传的文件

/**

   * 接收多文件

   */

  @RequestMapping("/upload")

  public  R  uploadFile(@RequestParam MapString, Object params, HttpServletRequest request) {

        // 复杂类型的request对象

      MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;

      // 获取文件名集合放入迭代器

      IteratorString files = mRequest.getFileNames();

        while (files.hasNext()) {

          // 获取上传文件的对象

          MultipartFile mFile = mRequest.getFile(files.next());

          if (mFile != null) {

              //原始文件名称

              String oldfile = mFile.getOriginalFilename();

       

              //文件后缀

              String suffix = oldfile.substring(oldfile.indexOf('.'), oldfile.length());

              String suffix2 = oldfile.substring(oldfile.indexOf('.')+1, oldfile.length());

          /***************文件处理*********************/

              }

      }

}

2.接收前端上传的文件

  /**

   * 接收附件

   * @param request

   * @return

   */

  @ResponseBody

  @RequestMapping(value="fileupload",method=RequestMethod.POST)

  public void springUpload(HttpServletRequest request) {

 

       //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)

      CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(

              request.getSession().getServletContext());

      //检查form中是否有enctype="multipart/form-data"

      if(multipartResolver.isMultipart(request)) {

      //将request变成多部分request

      MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;

      //获取multiRequest 中所有的文件名

       Iterator iter=multiRequest.getFileNames();

       while(iter.hasNext()){

              //一次遍历所有文件

              MultipartFile file=multiRequest.getFile(iter.next().toString());

              //最初上传文件名的文件名

              String oldFilename = file.getOriginalFilename();

              //获取初始文件名后缀

              String fileSuffix = oldFilename.substring(oldFilename.lastIndexOf(".") +1);

      /***************文件处理*********************/   

  }

}

3.接收前端上传的文件

/**

* 接收文件

*

*

* @param model

* @return

* @throws IOException

* @throws IllegalStateException

*/

@RequestMapping(value = "imageupload")

public void imageUpload(MultipartFile file) throws IllegalStateException, IOException {

          //文件名称

    String realFileName = file.getOriginalFilename();

    //文件后缀

    String suffix = realFileName.substring(realFileName.lastIndexOf(".") + 1);

         /***************文件处理*********************/

}

ajax上传文件后,后台java如何接收(求后台接收的完整代码)

写一个servlet或jsp来接收,在servlet或jsp处理业务逻辑,后返回处理结果或新的数据

如jsp:

%@ page errorPage="/common/error/error.jsp" %

%@ page contentType="text/html;charset=GBK"%

%

String planeNumber = request.getParameter("planeNumber");

String planeType = com.aerolink.aocs.system.parameter.list.PlaneTypeFactory.getPlaneType(planeNumber);

response.getWriter().write(planeType);%

关于java文件接收功能和java接收http文件流信息的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。