Just nu i M3-nätverket
Gå till innehåll

Visa slumpmässiga bilder ifrån en katalog


dkz

Rekommendera Poster

Hej!

Jag är i behov av kod/information (helst ASP.NET VB eftersom jag tidigare har programmerat lite ASP VB) som slumpmässigt visar bilder ifrån en katalog på webbservern. Namnen på bilderna följer inte någon struktur, så någon form av scanning av filmanen borde göras innan visning.

 

Någon som kan dirigera mig, i mitt första försök till ASP.NET kod.

 

 

Länk till kommentar
Dela på andra webbplatser

Du använder ett objekt som heter System.IO.DirectoryInfo. Den har en metod för att hämta samtliga filer i en katalog.

 

Sen kan du plocka fram ett slumptal med Random, den klarar av att hämta slumptal mellan två värden. Tillexempel 0 och antalet bilder du fått från din DirectoryInfo.

 

Sen visar du bilden, antagligen genom att rita ut en html-tagg, eller använda den inbyggda <asp:image> taggen.

 

Jag vet att jag inte skriver kod åt dig. Men jag tror nästan att detta är ett bättre sätt. Kolla på http://msdn.microsoft.com/ efter exempel på hur du använder objekten.

 

Länk till kommentar
Dela på andra webbplatser

 
Dim File As String
       Dim Files As ArrayList = New ArrayList
       Dim Rand As Random = New Random()
       For Each File In Directory.GetFiles(Server.MapPath("/"), "*.jpg")
           Files.Add(Path.GetFileName(File))
       Next
       Me.Image1.ImageUrl = "http://DinUrl/" & Files((Rand.Next(0, Files.Count - 1)))

 

Länk till kommentar
Dela på andra webbplatser

Tack!

Ska testa koden när jag kommer hem, jag återkommer SÄKERT med fler nybörjarfrågor.. :)

 

 

 

Länk till kommentar
Dela på andra webbplatser

Jag har nu testat koden och erkänner att jag inte förstår riktigt vad felmeddelandet innebär.... Någon som kan hjälpa mig på traven här ?

[log]

Server Error in '/' Application.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30689: Statement cannot appear outside of a method body.

Source Error:

Line 5:  Dim Files As ArrayList = New ArrayList
Line 6:  Dim Rand As Random = New Random()
Line 7:  For Each File In Directory.GetFiles(Server.MapPath("/"), "*.jpg")
Line 8:  Files.Add(Path.GetFileName(File))
Line 9:  Next


Source File: d:\www\tadmin33\web284\domain.nu\html\slumpbild.aspx    Line: 7

Show Detailed Compiler Output:

c:\windows\system32\inetsrv> "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" /t:library /utf8output /R:"C:\WINDOWS\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Mobile\2.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Runtime.Serialization\3.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.IdentityModel\3.0.0.0__b77a5c561934e089\System.IdentityModel.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" /out:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\40024cae\6f499b98\App_Web_4918vsxa.dll" /debug- /define:_MYTYPE=\"Web\" /imports:Microsoft.VisualBasic,System,System.Collections,System.Collections.Specialized,System.Configuration,System.Text,System.Text.RegularExpressions,System.Web,System.Web.Caching,System.Web.SessionState,System.Web.Security,System.Web.Profile,System.Web.UI,System.Web.UI.WebControls,System.Web.UI.WebControls.WebParts,System.Web.UI.HtmlControls  "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\40024cae\6f499b98\App_Web_4918vsxa.0.vb" "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\40024cae\6f499b98\App_Web_4918vsxa.1.vb"


Microsoft (R) Visual Basic Compiler version 8.0.50727.832
for Microsoft (R) .NET Framework version 2.0.50727.832
Copyright (c) Microsoft Corporation.  All rights reserved.

d:\www\tadmin33\web284\domain.nu\html\slumpbild.aspx(7) : error BC30689: Statement cannot appear outside of a method body.

For Each File In Directory.GetFiles(Server.MapPath("/"), "*.jpg")
~~~                                                              
d:\www\tadmin33\web284\domain.nu\html\slumpbild.aspx(8) : error BC30188: Declaration expected.

Files.Add(Path.GetFileName(File))
~~~~~                            
d:\www\tadmin33\web284\domain.nu\html\slumpbild.aspx(9) : error BC30035: Syntax error.

Next
~~~~
d:\www\tadmin33\web284\domain.nu\html\slumpbild.aspx(10) : error BC30035: Syntax error.

Me.Image1.ImageUrl = "http://domain.nu/images/" & Files((Rand.Next(0, Files.Count - 1)))
~~

[/log]

 

LOG-taggar tillagda av moderator

 

[inlägget ändrat 2007-08-02 22:22:32 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Alltså, koden måste du förstås lägga i lämplig händelsehanterare, ex. i Page.Load eller Page.PreRenderComplete

 

Länk till kommentar
Dela på andra webbplatser

Hmm. Som sag jag är ny på asp.net. Jag har nu lagt in koden i en Sub Page_Load, men får inte samma med endå felmeddelande när jag försöker köra koden.

 

<%@ Page Language="VB" %>
<script runat="server">
Sub Page_Load

Dim File As String
Dim Files As ArrayList = New ArrayList
Dim Rand As Random = New Random()
For Each File In Directory.GetFiles(Server.MapPath("/"), "*.jpg")
Files.Add(Path.GetFileName(File))
Next
Me.Image1.ImageUrl = "http://www.x.nu/" & Files((Rand.Next(0, Files.Count - 1)))

End Sub
</script>

 

 

[log]Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

 

Compiler Error Message: BC30451: Name 'Directory' is not declared.

 

Source Error:

Line 6: Dim Files As ArrayList = New ArrayList

Line 7: Dim Rand As Random = New Random()

Line 8: For Each File In Directory.GetFiles(Server.MapPath("/"), "*.jpg")

Line 9: Files.Add(Path.GetFileName(File))

Line 10: Next

Source File: d:\www\x\x\xnu\html\slumpbild.aspx Line: 8

 

Show Detailed Compiler Output:

c:\windows\system32\inetsrv> "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" /t:library /utf8output /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Services\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.IdentityModel\3.0.0.0__b77a5c561934e089\System.IdentityModel.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Mobile\2.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.ServiceModel\3.0.0.0__b77a5c561934e089\System.ServiceModel.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Runtime.Serialization\3.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll" /out:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\40024cae\6f499b98\App_Web_slumpbild.aspx.cdcab7d2.whn3g9pr.dll" /debug- /define:_MYTYPE=\"Web\" /imports:Microsoft.VisualBasic,System,System.Collections,System.Collections.Specialized,System.Configuration,System.Text,System.Text.RegularExpressions,System.Web,System.Web.Caching,System.Web.SessionState,System.Web.Security,System.Web.Profile,System.Web.UI,System.Web.UI.WebControls,System.Web.UI.WebControls.WebParts,System.Web.UI.HtmlControls "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\40024cae\6f499b98\App_Web_slumpbild.aspx.cdcab7d2.whn3g9pr.0.vb" "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\40024cae\6f499b98\App_Web_slumpbild.aspx.cdcab7d2.whn3g9pr.1.vb"

 

 

Microsoft ® Visual Basic Compiler version 8.0.50727.832

for Microsoft ® .NET Framework version 2.0.50727.832

Copyright © Microsoft Corporation. All rights reserved.

 

d:\www\x\x\x.nu\html\slumpbild.aspx(8) : error BC30451: Name 'Directory' is not declared.

 

For Each File In Directory.GetFiles(Server.MapPath("/"), "*.jpg")

~~~~~~~~~

d:\www\x\x\x.nu\html\slumpbild.aspx(11) : error BC30456: 'Image1' is not a member of 'ASP.slumpbild_aspx'.

 

Me.Image1.ImageUrl = "http://www.x.nu/" & Files((Rand.Next(0, Files.Count - 1)))

~~~~~~~~~

[/log]

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...