2011-11-15 42 views
0

我在一個任務,我需要創建一個文件serverside並將此文件移動到一個USB密鑰。ASP.NET - 從網絡服務器複製文件到USB密鑰

是否可以將文件從網絡服務器複製到USB密鑰? (任何安全問題)

此外,用戶需要指出文件需要保存到哪個路徑。是否有像asp上傳控件一樣的控件,用戶可以瀏覽到正確的目錄,或者是使用文本框的簡單解決方案,用戶可以在其中編寫例如文本框。 「E:\ mygeneratedfiles」

USB密鑰是在用戶本地計算機

+0

是本地機器上還是服務器上的USB密鑰? –

+0

插入USB鑰匙的機器是什麼?客戶端機器(即使用網絡瀏覽器的機器)還是服務器(即擁有IIS的機器?)如果前者,那麼這不是一個編程問題,您只能向用戶提供有關如何使用瀏覽器。如果是後者,那麼這是一個關於如何使用ASP.NET將文件寫入文件系統的問題 – MatthewMartin

+1

這個問題顯示了直接寫入用戶文件系統的各種可用技術:http://stackoverflow.com/questions/292566/瀏覽器應用程序本地文件系統訪問 – MatthewMartin

回答

1

從ASP.NET的角度來看待這個代碼示例,您可以在HTTP返回文件響應,但是一旦文件被髮送到客戶端網絡瀏覽器,你幾乎不走運。

爲了簡化保存過程(不是我的專業知識領域),可能有些事情可以用javascript來做,但直接訪問客戶端的文件系統,特別是寫入文件系統是不可能的。如果你想這樣做,你必須編寫一個ActiveX控件或類似的插件。

編輯:

對於在HTTP響應中返回的文件,在加載文件到一維字節數組,並使用以下代碼模式:

context.Response.Clear() 
context.Response.AddHeader("content-disposition", "attachment;filename=" & objFile.FileName) 
context.Response.BinaryWrite(objFile.FileImage) 
context.Response.End() 

在這個例子中objFile.FileName是文件名字符串,objFile.FileImage是包含文件的Byte數組。 context是當前的HttpContext。

+0

是否可以在下載框中僅顯示「保存」和「取消」 – Millerbean

+0

@ user816178不是我所知道的。同樣,這是瀏覽器的一個功能,出於安全原因,這些東西不受Web服務器的保護。某些瀏覽器甚至不會顯示對話框,例如Chrome默認將文件保存在默認的下載目錄中,除非它是可執行文件,其中下載欄上顯示「保存/放棄」按鈕面板。 – pseudocoder

+0

正如MatthewMartin在評論中指出的那樣,有許多方法可以通過您的Web應用程序訪問客戶端系統,但它們都包含一些用戶爲了安全原因必須接受的插件。 – pseudocoder