"We are back" « oc.at

ASP & Dateityp erkennen

grOOvekill@ 16.07.2004 - 11:53 530 6
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
S'gott,

ich fingere gerade an einem ASP Skript herum, das ein Kollege von mir erstellt hat. Eines vorweg: Ich bin schon keine PHP Leuchte, aber von ASP hab ich sogar noch weniger Ahnung. Folgendes will ich aber versuchen:

An einer Stelle werden Dateien eines Webverzeichnisses eingelesen und anhand einer Tabelle ausgegeben. Dabei wird zuerst ein Image ausgegeben, dann der Dateiname inklusive Extension. Nun wird, egal um welchen Dateityp es sich handelt, immer das gleiche Image angezeigt, was natürlich ein wenig öd ist. Ich dachte daran, für die gängigsten Dateitypen eigene Images zu erstellen, die dann bei den betreffenden Dateien angezeigt werden (jpg, gif, zip, usw.).

Nun habe ich das Problem, dass ich keine Ahnung habe, wie man das in ASP bewerkstelligt. Ich nehme mal an, dass ich innerhalb der Schleife, die die Dateien des Verzeichnisses einliest, eine Abfrage einbaue und nachsehe, um welche Art von Datei es sich dabei handelt und dann halt das betreffende Image ausgebe. Tja, in der Theorie halt. Kann mir irgendwer sagen, wie das in der Praxis auszusehen hat?

Hier die Schleife, die einliest:

Code: PHP
foreach(FileInfo fi in rgFiles){
   labplh.Text += "<tr bgcolor=\"#f4f4f4\" onMouseOver=\"this.style.backgroundColor='#ffffff'\" onMouseOut=\"this.style.backgroundColor='#f4f4f4'\"><td width='20'>";
   labplh.Text += "<a href='http://" + Request.ServerVariables["HTTP_HOST"] + Session["curDir"] + "/" + fi.Name + "'><img src='[b]graphics/document_public.gif[/b]' border='0' alt='PREVIEW'></a></td>";
   labplh.Text += "<td>" + fi.Name + "</td>";
   labplh.Text += "<td align=\"middle\">" + fi.LastAccessTime + "</td>";
   labplh.Text += "<td align='right'>" + (fi.Length/1024 + 1) + " KB</td>";
   labplh.Text += "</tr>";
}

tia

edit: Ich habe gerade festgestellt, dass es sich bei der Datei, die ich bearbeite, um ein aspx File handelt. Ist vielleicht nicht so unwichtig. ;)
Bearbeitet von grOOvekill@ am 16.07.2004, 14:02

rettich

Legend
waffle, waffle!
Avatar
Registered: Jan 2004
Location: wien
Posts: 794
einfache möglichkeit: du machst halt auf das fi.Name ein right(string,3) - dann hast eine dreistellige extension hinten, die du per case in ein passendes bild umwandelst (case "zip" -> "zip.gif", usw)

etwas genauere möglichkeit: du suchst den letzten vorkommenden punkt in fi.Name, alles rechts davon ist die endung. dann wieder ein case. (letzten vorkommenden punkt suchen mit InStr())

ganz sauber: du schaust in den file-header und liest dort heraus, was es eigentlich für ein file ist (dann kriegst zB für ein zip file mit endung .gif auch wirklcih das zip-icon). code dazu gibts im netz, ich werd mal suchen, vielleicht find ich auf die schnelle was.

add: und für die ganz faulen gibts hier einen fix fertigen sample code zum runterladen:

http://www.buygold.net/v02n10/v02n10.html

einfach die GetExtensionFromFileName(sFileName, sName) rauskopieren und fertich.
Bearbeitet von rettich am 16.07.2004, 12:05

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Ächz! Also, für jemanden, der weder VB kann, noch ASP beherrscht ist die Syntax echt ein Hammer! Hab mich jetzt damit gespielt, kriege aber eine Fehlermeldung nach der anderen. Ich hab mir einfach die eine Funktion GetExtensionFromFileName gekrallt und versucht in das aspx File einzubetten, aber irgendwie komme ich nicht über die Fehlermeldungen hinaus. :(

rettich

Legend
waffle, waffle!
Avatar
Registered: Jan 2004
Location: wien
Posts: 794
"aspx-file"? dann brauchst du ASP.NET code, nicht ASP code. ok, nicht wirklich viel unterschied, aber 1:1 reinpasten geht da nicht.

probiers mal damit:

Code:
  Dim strExten as String
  Dim iPos As Integer = InStrRev(strFile, ".")
      Try
         strExten = Mid(strFile, iPos)
      Catch
         MsgBox("Filename must include an extension.")
         strExten = ""
         'Exit!
      End Try

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Okay, ich hab mich für den leichten Weg entschieden. Ich hab eine Methode EndsWith gefunden, mit der ich einfach abfrage, womit die Datei endet. In einer if/else Schleife knall' ich dann halt jeweils die betreffende Grafik für den jeweiligen Datentyp rein. Ist vermutlich nicht so ganz die feine eEnglische, aber es funktioniert wenigstens. :) Andere Frage: Es gibt doch sicher auch so eine TOUPPER Funktion oder Methode. Irgendwie hab ich da nix gefunden. Jemand 'ne Ahnung?

rettich

Legend
waffle, waffle!
Avatar
Registered: Jan 2004
Location: wien
Posts: 794
jop, genauso, wie du String.EndsWith() hast, hast du auch String.ToUpper() in der string-class

-> http://www.aspmatrix.com/asp-net/st...ples/index.aspx

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2306
Alles klar, danke!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz