DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Bernhard Elbl Artikel Drucken
        
Bild in DB ?

Es gibt in ASP viele Möglichkeiten um Bilder dynamisch upzuloaden und darzustellen. Sie können z.B. ein Bild in eine Datenbank uploaden. Dies bringt Ihnen, aber nicht immer einen Vorteil. Vorallem nicht, wenn Sie keinen eigenen Server als Host verwenden. Riesige DB´s sind unhandlich und können schlecht gewartet werden! Außerdem müssen Sie eine Komponente installieren und nur wenige HOST´s bieten diesen Service. Sie können dem User trotzdem die Möglichkeit geben Dateien(Bilder z.B.) upzuloaden, ohne dazu eine Komponente registrieren zu müssen. Die Lösung heißt hier: MetaBuilders.FileUp.wsc"-Script:Komponente

Hier erfahren Sie zudem, wie Sie Usern die Möglichkeit geben können, einen Texte zu Veröffentlichen und 1 Bild zu integrieren. Dieses kann der User selbst uploaden. Diese kann in einer ASP-Seite instanziert und geladen werden.

artikelwrite.asp
...
Hier steht die Form für die Artikel-Text
...
<%
if Request.Form("submit") = "Speichern" then
' ---------- Der Artikel-Text werden HTML-Zeilenumbrüche zugewiesen
 ohneBreak = Request.Form("txtartikel")
 mitBreak = replace(ohneBreak,vbCrlf,"<br>")
 mitBreak = replace(mitBreak,[-!!Bild!!-],"<br>[-!!Bild!!-]<br>")
 strBildPos = inStr(mitBreak,"[-!!Bild!!-]")

' ---------- Abfrage, ob Bild in Maske vorhanden
 if strBildPos <> 0 then
' ---------- SQL-String um Datensatz mit Bild-Info´s in DB zu speichern
  strSQL = "INSERT INTO artikel(ArtHead, ArtText, BildName, BildPos) VALUES ('" _
  & Request.Form("txthead") & "', '" & mitBreak & "', '" _
  & session("FileName") & "', " & strBildPos & ");"
 else
' ---------- SQL-String um Datensatz ohne Bild-Inf´s in DB zu speichern
  strSQL = "INSERT INTO artikel(ArtHead, ArtText) VALUES ('" _
  & Request.Form("txthead") & "', '" & mitBreak & "');"
 end if
' ---------- DB-Connection öffnen und SQL-String executen
 set conn = server.CreateObject("ADODB.Connection")
  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Inetpub\wwwroot\developer\uploadwsc2\artupload.mdb;Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;User Id=Admin;PASSWORD=;", "Admin", ""
  '------------ der SQL-String frägt die DB nach allen Werten der Tabelle Customers ab.
  conn.Execute strSQL
 set conn = nothing
' ---------- Abfrage, ob Bildeinfügen gedrückt wurde
elseif Request.Form("submit") = "Bild" then
' ---------- Artikel-Info´s in Session-Variablen speichern
 session("txthead") = Request.Form("txthead")
 session("txtartikel") = vbCrlf & Request.Form("txtartikel") & "[-!!Bild!!-]" & vbCrlf
' ---------- Upload-Seite für Bild aufrufen
 Response.Redirect "./upload.asp"
end if
%>


Die Upload.asp nimmt nur Dateien mit den Extensionens "gif" und "jpg" entgegen und speichert sie in einem Verzeichnis.
upload.asp
<%
' ---------- Upload-Komponente instanziieren
strPfad = "script:" & Server.MapPath("./MetaBuilders.FileUp.wsc" )
set MBRequest = GetObject(strPfad)

 If MBRequest("submit") = "Upload" then
' ---------- Upload-Komponenten funktionen:
' ---------- Extension abfragen und überprüfen.
  if MBRequest("File1").Extension = "gif" or MBRequest("File1").Extension = "jpg" then
' ---------- Dateiname in Session-Variable ablegen
  session("FileName") = MBRequest("File1").FileName
' ---------- Datei speichern 
  MBRequest("File1").Save
  %><a href="./artikelwrite.asp">Bildupload fertig</a><%
' ---------- wenn ungültige Extension
  else
  Response.Write "Es können nur GIF´s und JPG - Dateien upgeloadet werden!"
  end if
 set MBRequest = Nothing
 Else
' ---------- Die Form muß die Eigenschaft "multipart/form-data" um binäre Daten aufzunehmen
%>
<html>
 <head>
  <title>Datei - Upload</title>
 </head>
 <body>
  <h1>Bild - Upload</h1>
  <form method="post" action="" enctype="multipart/form-data"  id=form1 name=form1>
   <table>
   <tr><td><input type="file" name="File1"></td></tr>
   <tr><td><input type="submit" name="submit" value="Upload"></td></tr>
   </table>
  </form>
 </body>
</html>
 <%
End If
set MBRequest = Nothing
%>


Mit der folgenden Seite können Sie die geschrieben Texte betrachten. Der Text wird aufgesplittet und das Bild in der richtigen Position einfügt.
artikelview.asp
<%@ Language=VBScript %>
<html>
<head>
</head>
<body>
<%
' ---------- Verbindung zur DB herstellen
set conn = server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
 conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Inetpub\wwwroot\developer\uploadwsc2\artupload.mdb;Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;User Id=Admin;PASSWORD=;", "Admin", ""
 strSQL = "SELECT * FROM artikel"
 rs.Open strSQL,conn
 strArtText =  rs.Fields("ArtText")
 Response.Write "<h1>" & rs.Fields("ArtHead") & "</h1>"

' ---------- Abfragen, ob Bild integriert wurde
 if rs.Fields("BildPos") = 0 then
  Response.Write strArtText
 else
' ---------- Wenn Bild vorhanden dann...  
  strBisBild = left(strArtText,rs.Fields("BildPos") - 1)
  strNachBild = mid(strArtText,rs.Fields("BildPos") + 12)
  Response.Write strBisBild & "<img src='" & rs.Fields("BildName") & "'>" & strNachbild
 end if
set rs = nothing
set conn = nothing 
%>
</body>
</html>


Unten können Sie den kompletten Code mit Datenbank downloaden.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente

  Erfasst am: 16.03.2001
  Gültig bis: 15.04.2001
40 Ratings
Bewertung: 82,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG