java上传文件到局域网内的另一台计算机上

分析

  今天又遇到一个问题:怎样将文件上传到局域网内的另一台机器上。解决方案粗略的想了下大概有如下几种:
1. 搭建一台FTP服务器,然后通过FTP协议进行文件传输。这个方式固然有效,但是有点麻烦。
2. 通过Socket来传输文件,这种方法需要编写一个客户端和一个服务端,这种方案比较通用,在其他方案不可行的情况下,这种方案还是不错的。
3. 搭建一台HTTP服务器(例如tomcat),上传文件时直接将文件上传到这台机器上,需要部署用来上传文件的应用。
4. 如果是windows系统可以采取最简单的形式来完成文件传输(文件共享)。

采用windows文件夹共享来实现

  本文最要用第4个方式来完成此功能:
首先在你想要保存上传文件的计算机上设置文件共享,例如本文共享的是image文件夹:
右键image文件夹 -> 属性 -> 共享 -> 文件和文件夹共享

文件共享

注意:一定要添加Evenyone用户,并且要给读写的权限。
共享完成后,开始 -> 运行,输入\\192.168.0.67\image (根据实际情况输入你自己的ip)打开共享文件目录。

这里写图片描述

以下是java代码:

public class Test {
    public static void main(String[] args) throws Exception {
        String srcPath = "c:\\pic.jpg";
        File parentDir = new File("\\\\192.168.0.67\\image");
        File targetPath = new File(parentDir, 
                UUID.randomUUID().toString().replaceAll("-", "") + ".jpg");
        InputStream in = new FileInputStream(srcPath);
        OutputStream out = new FileOutputStream(targetPath);
        try {
            byte[] bs = new byte[1024];
            int len = -1;
            while((len = in.read(bs)) != -1) {
                out.write(bs, 0, len);
            }
        } finally {
            try {
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println("上传成功!!");
    }
}

  本例只是将本地的一个图片文件上传到局域网内的计算机,File parentDir = new File("\\\\192.168.0.67\\image") 注意后面的 文件路径,\\\\后面紧跟着局域网IP地址,后面是共享文件的目录,接下来与操作普通文件一样进行操作, 通过流写到目标位置。文件名是通过UUID来生成,除掉其中的-,关于文件目录打散:可以通过一些算法来生成文件目录,例如:通过yyyy/MM/dd的日期格式来创建文件夹,也可以通过文件名的哈希码进行一些处理来生成目录。
  通过下图看到,图片确实已经上传上传上去了:

这里写图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值