2012-10-10 49 views
0

圖像文件名是通過獨特的顯示存儲在特定ID的圖像與之前添加vendorID像「200018hari」。下圖顯示filename存儲在列Cmp_DocPath中的表格。如何從服務器文件夾

The Table where the filename is stored in the column Cmp_DocPath

我想顯示從服務器文件夾中的特定VendorID形象。「d:\上傳\商用證書」,當用戶從下拉列表中選擇vendorID(圖片不能顯示完整的表單設計與下拉列表。)

Form design

我試試這個在內嵌代碼,但圖像不顯示。但我知道如果用戶從下拉菜單中選擇其他VendorID,這不會對我有所幫助。

我將如何處理C#中的代碼隱藏?

<asp:Image ID="Image1" runat="server" Height="400px" Width="400px" 
    ImageUrl ="AdminCompanyInfo.aspx?FileName=~/Upload/Commerical Certificates/200027mcp.png"/> 
+2

聽起來像是一個安全問題,如果客戶端可以在服務器上定義他想下載的東西的路徑。 (如何下載你的web.config然後?) –

+0

客戶端只需使用文件上傳上傳圖像。我在IIS中創建了虛擬路徑,並提供了存儲上傳圖像的路徑。所以客戶端沒有定義服務器的路徑。我需要C#代碼來檢索文件夾中的圖像以顯示在屏幕上。 – Hari

回答

0

從我的朋友們的建議後,我改變了代碼的物理路徑的圖像存儲「d:\上傳」並存儲上傳的圖片中的「d:\的Inetpub \ wwwroot的\」。最後,在IIS中創建虛擬目錄,並將「D:\ inetpub \ wwwroot \ Upload」作爲物理路徑。下面的C#代碼從虛擬路徑中檢索圖像。

 private void CallImage() 
     { 
     SqlConnection SqlCon = new SqlConnection(GetConnectionString()); 
     SqlCon.Open(); 
     string query = "SELECT FilePath FROM CompanyInfo 
       WHERE VendorID= '" + ddlVendorID.SelectedValue + "'"; 
     SqlCommand SqlCmd = new SqlCommand(query, SqlCon); 
     SqlDataAdapter da = new SqlDataAdapter(SqlCmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     string ImageName = Convert.ToString(dt.Rows[0][0].ToString()); 
     Image1.ImageUrl = ("~\\Upload\\Commerical Certificates\\" + ImageName); 
     SqlCon.Close(); 
    } 
+0

如何保護圖像免受未經授權的訪問? – dellyjm

0

如果你正試圖獲取與一個VendorID相關的圖像(Cmp_DocPath),你需要使用一個Generic Handler。以下應該是Generic Handler的技術。

  1. Generic Handler將從數據庫
  2. 讀取的圖像名稱後,它在對二進制數組
  3. 後,它將陣列寫入請求的響應讀出的圖像文件。

這必須工作。

+0

'代碼格式化'風格似乎在'印度'非常'流行',這些'天'。 –

+0

@UweKeim ::你是什麼意思? –