如何列出Web服务器上某些文件夹中的某些特定图像?

时间:2008-09-22 10:47:50

标签: asp.net vb.net

让我解释一下: 这是此文件夹的路径:> www.my_site.com/images

图像由user_id创建,例如,user_id = 27的图像是, 27_1.jpg27_2.jpg27_3.jpg! 如何列出和打印以27_%.jpg开头的图像? 我希望你了解我! PS。我完全是ASP.NET(VB)的初学者,请给我详细的信息

这里开始我的循环

while dbread.Read()

'and then id user_id
dbread('user_id')

NEXT ???


我需要创建XML,直到现在我创建了这样的:

act.WriteLine( “”) act.WriteLine( “http://www.my_site.com/images/” &安培; dbread( “USER_ID”)及 “_ 1.JPG”) act.WriteLine( “”)

但这不是答案,因为我需要创建此节点这个用户有多少图像存在?

在数据库中不存在此图像的列表,这就是我必须在文件夹中计算它们的原因。 (这不是我的网站,但我需要在这个网站上创建XMl)

你了解我吗?

2 个答案:

答案 0 :(得分:1)

最好的方法是遍历目录中的所有文件。

While dbRead.Read
  dim sUserId as String= dbread('user_id')
  For Each sFile As String In IO.Directory.GetFiles("C:\")
    if sFile.StartsWith (sUserId) Then
        'Do something.
    End If
  Next
Loop

但是,要实际显示图像,最好的办法是创建这些图像的数据表,然后使用数据列表或转发器控件来显示它们。

Dim dtImages as new DataTable
dtImages.Columns.Add("Filename")
If dbRead.Read
  dim sUserId as String= dbread('user_id')
  For Each sFile As String In IO.Directory.GetFiles("C:\")
    if sFile.StartsWith (sUserId) Then
        Dim drImage as DataRow = dtImages.NewRow
        drImage("Filename") = sFile
        dtImages.Rows.add(drImage)
    End If
  Next
End If
dlImages.DataSource = dtImages
dlImages.DataBind

然后,在你的ASPX页面上,你将有一个名为dlImages的数据主义控件定义如下:

    <asp:datalist id="dlImages" RepeatDirection="Horizontal" runat="server" RepeatLayout="Flow" Height="100%">
        <ItemTemplate>
            <asp:Image ID="Image1" Runat=server ImageUrl='<%# Server.MapPath("photos") & Container.DataItem("FileName") %>'>
            </asp:Image>
        </ItemTemplate>
    </asp:datalist>

答案 1 :(得分:1)

适当的方法是执行以下操作

  1. 使用System.IO.Directory.GetFiles(“YourPath”,UserId +“_ *。jpg”)获取文件列表
  2. 遍历此列表并构建您的XML,然后将其呈现给用户。
  3. 基本上,GetFiles方法接受一个路径,以及一个允许你进行通配符搜索的“filter”参数!

    修改 GetFiles操作返回表示完整文件名的字符串列表,然后您可以使用System.IO.Path.GetFileName()方法操作这些值以获取实际文件名。

    如果要实际构建文档,可以使用XmlDocument类,也可以使用简单循环和字符串构建器来完成。如下所示。

    StringBuilder oBuilder = new StringBuilder();
    oBuilder.Append("<root>");
    string[] ofiles = Directory.GetFiles("YourPath", "yourMask");
    foreach(string currentString in oFiles)
    {
        oBuilder.AppendLine("<file>http://yourpath/" + Path.GetFileName(currentString) + "</file>");
    }
    oBuilder.Append("</root");