首页 > Web开发 > 详细

TCP--文件上传

时间:2019-07-18 14:17:24      阅读:82      评论:0      收藏:0      [点我收藏+]

客户端

public class Test2_UpdateClient {
    public static void main(String[] args) throws UnknownHostException, IOException {
        // 1.提示输入要上传的文件路径, 验证路径是否存在以及是否是文件夹
        File file = getFile();
        // 2.发送文件名到服务端
        Socket socket = new Socket("127.0.0.1", 12345);
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintStream ps = new PrintStream(socket.getOutputStream());
        ps.println(file.getName());
        // 6.接收结果, 如果存在给予提示, 程序直接退出
        String result = br.readLine();                      //读取存在后不存在的结果
        if("存在".equals(result)) {
            System.out.println("您上传的文件已经存在,请不要重复上传");
            socket.close();
            return;
        }
        // 7.如果不存在, 定义FileInputStream读取文件, 写出到网络
        FileInputStream fis = new FileInputStream(file);
        byte[] arr = new byte[8192];
        int len;
        while((len = fis.read(arr)) != -1) {
            ps.write(arr, 0, len);
        }

        fis.close();
        socket.close();
    }




    private static File getFile() {
        Scanner sc = new Scanner(System.in);                //创建键盘录入对象
        System.out.println("请输入一个文件路径:");

        while(true) {
            String line = sc.nextLine();
            File file = new File(line);

            if(!file.exists()) {
                System.out.println("您录入的文件路径不存在,请重新录入:");
            }else if(file.isDirectory()) {
                System.out.println("您录入的是文件夹路径,请输入一个文件路径:");
            }else {
                return file;
            }
        }
    }
}

服务端

public class Test2_UpdateClient {
    public static void main(String[] args) throws UnknownHostException, IOException {
        // 1.提示输入要上传的文件路径, 验证路径是否存在以及是否是文件夹
        File file = getFile();
        // 2.发送文件名到服务端
        Socket socket = new Socket("127.0.0.1", 12345);
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintStream ps = new PrintStream(socket.getOutputStream());
        ps.println(file.getName());
        // 6.接收结果, 如果存在给予提示, 程序直接退出
        String result = br.readLine();                      //读取存在后不存在的结果
        if("存在".equals(result)) {
            System.out.println("您上传的文件已经存在,请不要重复上传");
            socket.close();
            return;
        }
        // 7.如果不存在, 定义FileInputStream读取文件, 写出到网络
        FileInputStream fis = new FileInputStream(file);
        byte[] arr = new byte[8192];
        int len;

        while((len = fis.read(arr)) != -1) {
            ps.write(arr, 0, len);
        }

        fis.close();
        socket.close();
    }




    private static File getFile() {
        Scanner sc = new Scanner(System.in);                //创建键盘录入对象
        System.out.println("请输入一个文件路径:");

        while(true) {
            String line = sc.nextLine();
            File file = new File(line);

            if(!file.exists()) {
                System.out.println("您录入的文件路径不存在,请重新录入:");
            }else if(file.isDirectory()) {
                System.out.println("您录入的是文件夹路径,请输入一个文件路径:");
            }else {
                return file;
            }
        }
    }
}
  • 此方法可以使用云服务器当做文件传输方式,需要修改上传方式。可使用web快速选择文件上传目录等。通过IP地址+文件地址访问上传文件
    代码部分参考文档。

TCP--文件上传

原文:https://www.cnblogs.com/PoetryAndYou/p/11206532.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!