Uložení obrázku z databáze na server   zodpovězená otázka

ASP.NET WebForms, ASP.NET MVC, SQL

Zdravím,

mám vytvořenou webovou aplikaci, ve které mám spousty obrázku. Obrázky mám uložené v databázi jako binární typy. To bych chtěl změnit, neboť databáze narostla a začíná být občas značně pomalá. Ale nějak se nemůžu dopracovat k výsledku.

Jakmile chci obrázky uložit, tak mi to vyhodí "is not a valid virtual path." :(

Obrázky mají totiž adresu například: File.aspx?id=1

Protože takto obrázky tahám z databáze:

 Using myConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

            Const SQL As String = "SELECT [ImgType], [ImgData] FROM [Obrazky] WHERE [id] = @id"
           
            Dim myCommand As New SqlCommand(SQL, myConnection)
            myCommand.Parameters.AddWithValue("@id", id)

            myConnection.Open()

            Dim myReader As SqlDataReader = myCommand.ExecuteReader

            If myReader.Read Then
                Response.ContentType = myReader("ImgType").ToString()
                Response.BinaryWrite(myReader("ImgData"))
            End If
            myReader.Close()
            myConnection.Close()
        End Using

Já bych chtěl uložit file.aspx?id=1 jako soubor (např. 1.jpg) do složky na server.

Už jsem zkusil snad všechno, co jsem znal :(

Nesetkal se někdo s tímto problémem?

Díky za každou radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Musite obrazek vlozit do memorystreamu a pak uz jednoduse pouzit tridu Image nebo Bitmap.

        System.Drawing.Image newImage;
        byte[] data = (byte[])myReader["ImgData"]; 

        using (MemoryStream ms = new MemoryStream(data, 0, data.Length))
        {
            ms.Write(data, 0, data.Length);

            newImage = System.Drawing.Image.FromStream(ms, true);
            newImage.Save("D:\\moje_obrazky\\obrazek.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
            newImage.Dispose();

        }

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, to je přesně ono.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback