2011-05-16 88 views
0

我想以下類型的功能
如何發送和接收文件?

有兩個用戶AB兩者都訪問同一頁面
此頁面上有一個按鈕(發送文件)。
A點擊按鈕的Open Dialog框應出現
AOpen Dialog框中選擇一個文件,那麼應該有一個鏈接出現在B的頁面包含文件名
B點擊了鏈接,一個SaveAs對話框應該出現,給後名稱和路徑文件下載應該開始。

在這方面的任何形式的幫助將不勝感激!

回答

1

打開對話框中來達到的與HTML輸入:<input type="file">

另存爲對話框使用html定位點:<a href="www.myserver.com/download.aspx?filename='the file'">

用戶A選擇文件後,您可以使用AJAX或onsubmit表單通過您創建的upload.aspx頁面上載文件。

在用戶B的機器上,您使用AJAX調用updatefilelist.aspx頁面,該頁面返回可用文件列表。一旦用戶A的新文件上傳並保存在服務器上,用戶B的AJAX調用updatefilelist.aspx的下一個ping將更新其屏幕上顯示的列表以包含新文件。

點擊該文件可調用所需文件名的download.aspx頁面 - 您需要在此處設置Response.ContentTypeResponse.AddHeader("Content-Disposition", "attachment:filename=""" & IO.Path.GetFileName(Request.QueryString("filename")) & """")。保存爲對話框然後會自動彈出。

+0

你的意思是上傳文件到服務器,然後'B'會從服務器上下載。 – jams 2011-05-16 13:41:22

+0

是的,任何解決方案都需要A:上傳到服務器,然後B:從服務器下載。沒有辦法在A和B之間創建某種連接,而不使用服務器作爲中介。 – ic3b3rg 2011-05-16 15:11:30

1

那麼這個頁面可以分成兩部分:一個文件上傳控件,另一個通過AJAX每3-4秒輪詢一次,看看是否有新文件。

方「A」有一個標準的文件上傳控制,並使用標準的.NET方式保存上傳的文件(請參閱FileUpload.PostedFile.SaveAs(路徑),容易的東西)。文件上傳完成後,刷新此頁面。

Side「B」是一個從AJAX調用,XML,JSON或純文本中獲取其內容的div。有一個叫做「link.aspx」的AJAX頁面,可以以任何你想要的格式來回放內容。

對於鏈接,如果你想強制「下載」窗口,那麼文件需要是在瀏覽器中不能正常顯示的類型,或者你需要使用另一個aspx頁面來提供文件並強制一個對話框保存或打開。

aspx頁面將被稱爲「file.aspx」,你可以傳入查詢字符串參數(「id」或其他)來告訴它你想要什麼文件。你的這個頁面背後的代碼會找出你從查詢字符串PARAM所需要的文件,然後將擔任出來的文件:

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.fileName); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "image/jpeg"; // you gotta figure out the content type of the file here though. This is just the one for JPEGS. 

byte[] buffer = new byte[file.Length]; 
dl.Read(buffer, 0, (int)file.Length); 

Response.BinaryWrite(buffer); 
Response.End();