2011年1月4日 星期二

存取網路磁碟機

想透過網頁存取網路磁碟機的方式可分成兩大類:
一、 Client端:
利用 FileSystemObject物件對磁碟機(包括本機磁碟與網路磁碟在內)進行存取,參考資料如下:
1. 使用 FileSystemObject存取檔案

2. JavaScript中利用 ActiveXObject來創建 FileSystemObject操作文件:大陸網站

二、 Server端:
在網路上有許多文章都在討論有關〔存取網路磁碟機〕的問題,測試過幾種方法,介紹如下:
1. 透過 net use指令

先在A電腦(IP為 192.168.0.1)中,建立一共用資料夾(共用名稱為B$),設定使用者 poi(密碼為 ghj),可以透過網路存取B$資料夾;執行 IIS所在的電腦稱為C電腦。

Imports System.Diagnostics

Dim process As Process = New Process()
Try
Dim server, sharename, password, username

server = "192.168.0.1"
sharename = "B$"
username = "poi"
password = "ghj"

process.StartInfo.FileName = "net.exe"
process.StartInfo.Arguments = "use \\" + server + "\" + sharename + " " + password + " /user:" + username
process.StartInfo.CreateNoWindow = True
process.StartInfo.UseShellExecute = False
'C電腦透過 net use建立與A電腦的連線
process.Start()
'顯示 net use的語法
Response.Write(process.StartInfo.FileName + " " + process.StartInfo.Arguments + "
")

process.WaitForExit()

'透過「通用命名慣例」(UNC,Universal Naming Convention) 名稱存取資源。
'UNC命名是由 \\主機名稱或 IP Address\分享路徑\檔案路徑名稱(包含檔名在內) 組成。
'將檔案 1.txt從A電腦的共用資料夾B$拷貝至C電腦的D磁碟機中
Response.Write("Start Copy File.....
")
System.IO.File.Copy("\\" + server + "\" + sharename + "\1.txt", "d:\1.txt", True)
Response.Write("End Copy File.....
")

'切斷連線
process.StartInfo.Arguments = "use \\" + server + "\" + sharename + " /delete"
process.Start()

process.Close()
Catch ex As Exception
Response.Write("in FileCopy Exception:" + ex.Message)
Finally
process.Dispose()
End Try

沒有留言:

張貼留言