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的日期格式來創建文件夾,也可以通過文件名的哈希碼進行一些處理來生成目錄。
  通過下圖看到,圖片確實已經上傳上傳上去了:
這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM