You're lucky!
Mi hai stimolato la creatività!
Diciamo che nativamente (per ASP.NET) non conosco un metodo veloce diverso da quello che comunemente si utilizzava in ASP con il FileSystemObject...
In ASP.NET esistono dei controlli tipo GridView, DataList che ti permettono di caricare dinamicamente informazioni a partire da DB, files XML, oppure oggetti. In nessun modo è possibile caricare informazioni dal FileSystem.
Normalmente per caricare delle immagini in questi controlli ne viene specificato il path in una colonna del DB, oppure in un tag XML, o proprietà di esso.
In effetti però perché non caricare le informazioni dei files (... immagini nello specifico...) in un array di oggetti?
L'oggetto più indicato sarebbe
FileInfo che trovi in
System.IO. Ma sicuramente non da informazioni sulla posizione relativa del file nell'applicazione web...
Come tu sai una cosa è dire
C:\Inetpub\wwwroot\Images\image.jpg e altra cosa è
Images/image.jpg.
Quindi ho creato "
ad hoc" una dll che fa tutto questo.
Ha un oggetto principale
Folder il cui metodo
GetFileList ritorna un array di
FileListed.
Se prendi questo array e lo associ al
DataSource di un
DataList il gioco è pressochè fatto...
Pagina aspx
Codice:
<%@ Page Language="C#" MasterPageFile="~/Default.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" />
</ItemTemplate>
</asp:DataList>
</asp:Content>
Code behind
Codice:
using ArtCava.FileSystemListing;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Istanza dell'oggetto con specificato il Path di ricerca...
Folders fld = new Folders(@"C:\Inetpub\wwwroot\Images");
//Qui specifico il Path relativo per il WEB
fld.URLPath = "Images";
//Carico tutti i files
FileListed[] list = fld.GetFileList();
//Associo l'array al DataList
DataList1.DataSource = list;
//Genero il binding automatico dell'oggetto
DataList1.DataBind();
}
//Evento che si scatena ad ogni item dell'array che entra nel DataList
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
//Prelevo l'oggetto "boundato"...
FileListed f=(FileListed)e.Item.DataItem;
//Cerco l'oggetto image nel DataList
Image pippo = (Image)e.Item.FindControl("Image1");
//Gli assegno il Path, quello relativo...
pippo.ImageUrl=f.WebPath;
}
}
L'unico problema sta nel fatto che io utilizzo C#, ma vedrai la conversione di queste poche righe di codice saranno una passeggiata...
Le altre proprietà esposte attualmente dall'oggetto FileListed sono:
- Size
- FileExtension
- SystemPath
- Exists
- Name
Se hai bisogno di altre proprietà...
Per scaricare la DLL fai Click
qui
:byebye: