java上傳文件到局域網內的另外一臺計算機上

今天又遇到一個問題:怎樣將文件上傳到局域網內的另外一臺機器上。解決方案粗略的想了下大概有以下幾種:
1.搭建一臺FTP服務器,而後經過FTP協議進行文件傳輸。這個方式當然有效,可是有點麻煩。
2.經過Socket來傳輸文件,這種方法須要編寫一個客戶端和一個服務端,這種方案比較通用,在其餘方案不可行的狀況下,這種方案仍是不錯的。
3.搭建一臺HTTP服務器(例如tomcat),上傳文件時直接將文件上傳到這臺機器上,須要部署用來上傳文件的應用。
4.若是是windows系統能夠採起最簡單的形式來完成文件傳輸(文件共享)。java

本文最要用第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的日期格式來建立文件夾,也能夠經過文件名的哈希碼進行一些處理來生成目錄。
  經過下圖看到,圖片確實已經上傳上傳上去了:
這裏寫圖片描述windows

相關文章
相關標籤/搜索