2014-02-10 28 views
0

我想告訴我的驅動器的所有jpg文件在我的網頁如何使用datalist將我的硬盤上的文件夾綁定到我的網頁上?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     DirectoryInfo dir = new DirectoryInfo(MapPath("D:\pstRZ")); 
     FileInfo[] files = dir.GetFiles(); 
     ArrayList listItems = new ArrayList(); 

     foreach (FileInfo info in files) 
     { 
      listItems.Add(info); 
     } 

     dtlist.DataSource = listItems; 
     dtlist.DataBind(); 
    } 
} 
+0

在'pstRZ'存在哪些項目? jpeg圖像?那些圖片給網頁datalist? – zey

+0

是的所有都是JPEG圖像 – user3201772

+0

這段代碼是要綁定項目中存在的文件夾,但它不工作時,我必須綁定驅動器的數據 – user3201772

回答

0

如果您需要將影像存儲Web應用程序文件夾外,你需要有什麼辦法可以提供圖像用戶的一個解決方案是使用httphandler。

這裏是你的佈局:

<asp:DataList runat="server" ID="dtlist"> 
    <ItemTemplate> 
     <img src="GetImage.ashx?fileName=<%#Eval("Name")%>" alt="Image"/> 
    </ItemTemplate> 
</asp:DataList> 

這是你的代碼:

if (!IsPostBack) 
{ 
    var dir = new DirectoryInfo("D:\\Images\\"); 
    var files = dir.GetFiles("*.png"); 
    var listItems = new ArrayList(); 

    foreach (FileInfo info in files) 
    { 
     listItems.Add(info); 
    } 

    dtlist.DataSource = listItems; 
    dtlist.DataBind(); 
}    

這裏是HTTP處理程序GetImage.ashx:

public void ProcessRequest(HttpContext context) 
    { 
     var root = "D:\\Images"; 

     var fileName = context.Request.Params["fileName"]; 
     if (String.IsNullOrEmpty(fileName)) RenderInvalidRequestMessage(context); 

     var fullFilePath = root + "\\" + fileName; 
     //var dir = (new FileInfo(fullFilePath)).Directory; 
     //if (dir == null || dir.FullName != root) RenderInvalidRequestMessage(context); 

     if (!File.Exists(fullFilePath)) RenderInvalidRequestMessage(context); 

     //TODO: Add validation and any security check. 

     context.Response.ContentType = "image/png";    
     context.Response.WriteFile(fullFilePath); 
    } 

    private void RenderInvalidRequestMessage(HttpContext context) 
    { 
     context.Response.ContentType = "text/plain"; 
     context.Response.Write("File not found."); 
     context.Response.End(); 
    } 
+0

訪問數據從哪裏fileName將獲得值每當我加載的頁面它是空的代碼將重定向renderinvelidrequest(.... ); – user3201772

+0

你頁面會呈現像 代碼<表ID = 「dtlist」 CELLSPACING = 「0」 的風格= 「邊界崩潰:崩潰;」> \t \t \t​​ Image \t \t \t​​ Image \t 然後,瀏覽器將使用http://.../GetImage.ashx?fileName = 1.PNG爲每個圖像調用Web應用程序。此HTTP GET請求將通過get參數提供文件名。 –

相關問題