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

时间:2020-03-06 14:32:02  来源:igfitidea点击:

让我解释:
这是该文件夹的路径:>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')

下一个???

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

act.WriteLine("")
act.WriteLine(" http://www.my_site.com/images/"&dbread(" user_id")&" _1.jpg")
act.WriteLine("")

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

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

你了解我吗?

解决方案

最好的方法是循环浏览目录中的所有文件。

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>

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

  • 使用System.IO.Directory.GetFiles(" YourPath",UserId +" _ *。jpg")获取文件列表
  • 遍历此清单并构建XML或者将其呈现给用户。

基本上,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");