Hallo,
bin noch neu in diesem Gebiet und habe mit FileUpload noch keine Erfahrung.
Folgendes...
Bei Klick auch btnSave soll dass ausgewähle Bild in der DB gespeichert werden,
das ich folgendend löse:
if (FileUpload1.PostedFile != null)
{
string productName = txtProductName.Text;
byte[] productImage = FileUpload1.FileBytes;
string constr = @"Data Source=CHRISTIAN-PC\SQLExpress;Integrated Security=true;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\DBiFirma.mdf;Database=DBiFirma; Trusted_Connection=yes;";
string query = "INSERT INTO TBProducts(ProductName, ProductImage) VALUES(@ProductName, @ProductImage)";
SqlConnection con = new SqlConnection(constr);
SqlCommand com = new SqlCommand(query, con);
com.Parameters.Add("@ProductName", SqlDbType.NVarChar).Value = productName;
com.Parameters.Add("@ProductImage", SqlDbType.VarBinary).Value = productImage;
con.Open();
int result = com.ExecuteNonQuery();
con.Close();
if (result > 0)
{
lblMessage.Text = "Product Saved Successfully";
}
}
else
{
lblMessage.Text = "Please Select Product Image File";
}
Response.Redirect("Einstellungen.aspx");
}
Danach habe ich einen Eintrag in meiner DB den ihr im angehängten Bild sehen könnt.
im Pageload Möchte ich nun mein Bild aus der DB wieder ausgeben das aber leider nicht funtioniert wie ihr ebenfalls im angehängten Bild sehen könnt.
Was mache ich Falsch??
Danke schon mal im Voraus.
MFG
Das Schicksal bevorzugt jene die bereit sind.
Hallo,
das geht so nicht - Du kannst nicht einfach ein Bild ins HTML schreiben.
Und bevor Du Dir Illusionen machst: Es ist auch nicht möglich, das mit einem einzigen Request an den Server zu machen.
Du musst ein ganz normales <image src="|URL zum Bild|">
-Tag erstellen, das als src eine URL bekommt, unter der der Browser das Bild abrufen kann.
Dazu eignet sich am besten, in der Webapplikation einen HttpHandler (.ashx-Datei) zu implementieren, der das Bild anhand einer ID, die mit in der URL steckt, an den Client ausliefern kann.
Die Forumssuche liefert mit HttpHandler
bzw. IHttpHandler
jede Menge brauchbare Informationen dazu.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Du kannst nicht einfach ein Bild ins HTML schreiben.
Naja, eigentlich geht das schon. Man kann Bilder direkt als Base64 via Data URLs ins HTML schreiben. Sieht dann z.B. folgendermaßen aus:
<IMG
SRC="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH
hhx4dbgYKAAA7">
Aber ob das praktikabel ist, weiß ich nicht. Irgendwo stand auch was von einer Grenze von 4kB.
Gruß,
dN!3L
Naja, eigentlich geht das schon. Man kann Bilder direkt als Base64 ...
Dieses Feature unterstützen aber nur bestimmte Browser.
Vor allem mit älteren IE-Modellen hat ma da Probleme, bzw. keine Grafik.
Persönlich würd ich das eigentlich nicht einsetzen.
Am Besten ist das mit dem HttpHandler gelöst.
Der kriegt als Parameter die ImageId oder einen Dateinamen und
liefert das Bild zurück. Dabei könnte man dann gleich noch
resize- und crop-Funktionen miteinbauen...
Dazu gibts aber auch unzählige Tutorials im Web...
Tut mir leid für die Zwischenfrage: aber was hat das ganze für Vorteile?
* Die Datenbank wird schnell ziemlich groß ( damit auch Backups )
* Caching kann nicht genutzt werden
* Produktbilder kann man als statische Ressourcen bezeichnen, die sich so schnell nicht ändern werden
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich möchte eine Anmerkung zu Abt's Zwischenfrage machen:
Als Anmerkung noch: es gibt iwo im Netz (ich habs leider grade nicht zur Hand) einen Versuch von MS als Whitepaper, ob Dateien lieber in die Datenbank sollen oder auf die Festplatte.
Das Ergebnis des Whitepapers ist grob das folgende:
Alles unter 10MB in die Datenbank - das ist schneller als von Festplatte (ich war auch verwundert - aber es hängt wohl mit Fragmentierung und ähnlichen Effekten zusammen).
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)