2012-01-11 56 views
0

我在服務器上的某個文件夾中有一個形成的文件。我需要創建一些解決方案,以允許用戶將本地文件保存在計算機上的驅動器上。如何將文件從服務器文件夾保存到本地驅動器/客戶端?

任何人都可以告訴我如何完成,我應該使用什麼控制。

+0

** HTTP://stackoverflow.com/questions/3491174/how-to -save-a-file-generated-in-server-machine-in-clients-machinemydocument ** – 2012-01-11 09:24:09

+0

這不是程序文件保存在客戶端,用戶將啓動該過程中提到的帖子,如果我理解正確。 – MUS 2012-01-11 09:28:30

+0

此文件是否託管在某個虛擬目錄內的IIS服務器上?我希望這個文件不包含重要的信息。 – 2012-01-11 09:29:35

回答

2

這將打開瀏覽器另存爲對話框:

protected void Page_Load(object sender, EventArgs e) 
{ 

    FileStream fs = File.OpenRead(Server.MapPath("~/imgName.jpg")); 
    byte[] buffer = new byte[(int)fs.Length]; 
    fs.Read(buffer, 0, (int)fs.Length); 
    fs.Close(); 
    SetResponse("imgName"); 
    HttpContext.Current.Response.BinaryWrite(buffer); 
    HttpContext.Current.Response.Flush(); 
    HttpContext.Current.Response.Close(); 
} 

private static void SetResponse(string fileName) 
{ 
    string attachment = "attachment; filename=" + fileName + ".jpg"; 
    HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Response.ClearHeaders(); 
    HttpContext.Current.Response.ClearContent(); 
    HttpContext.Current.Response.AddHeader("content-disposition", attachment); 
    HttpContext.Current.Response.ContentType = "image/jpeg"; 
    HttpContext.Current.Response.AddHeader("Pragma", "public"); 
} 

嘗試用此權限打開的FileStream:

FileStream fs = new FileStream(Server.MapPath("~/imgName.jpg"), FileMode.Open, FileAccess.Read, FileShare.Read); 
+0

正是我需要的。但現在在FileStream上fs = File.OpenRead(Server.MapPath(「〜/ imgName.jpg」));它會返回異常:已經使用的文件!我可以去嗎? – 2012-01-11 10:20:46

+0

如果這不能解決問題,請發佈代碼的上一部分,以便使用該文件。 – zdrsh 2012-01-11 10:53:06

+0

文件NameDB.mdf文件的數據庫。它用於整個項目。我嘗試允許一些用戶複製數據庫文件。 – 2012-01-11 13:18:55

1

你只需要把你的文件鏈接放在aspx頁面。

<a href="path to your file on server">some text here</a> 

當用戶點擊這個鏈接時,他們會得到下載對話框,用它們可以將文件保存到本地系統。

相關問題