1. 程式人生 > >java上傳檔案到區域網內的另一臺計算機上

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的日期格式來建立資料夾,也可以通過檔名的雜湊碼進行一些處理來生成目錄。
  通過下圖看到,圖片確實已經上傳上傳上去了:

這裡寫圖片描述