J'éxécute le code suivant lorsque je clique sur un bouton dans ma page aspx.
Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique une
2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une
erreur générique s'est produit avec GDI+.
Cette erreur arrive lorsque je sauve l'image, je ne comprends pas....
Voici le code:
Try
Dim oConfig As New CSO_Lib_V2.clsConfig
Dim cnDataBase As New System.Data.SqlClient.SqlConnection
Dim sqlCmd As New System.Data.SqlClient.SqlCommand
Dim sPath As String
Dim sPhotoName As String
Dim iLastSlashIndex As Integer
' on enregistre les données dans un tableau de valeurs binaires
Dim StreamObject As System.IO.Stream
' on récupère la taille de l'image.
Dim FileLength As Long = upfile.PostedFile.ContentLength
' on créer un tableau de byte de la taille de l'image.
Dim FileByteArray(FileLength) As Byte
' On récupère le fichier dans un stream
StreamObject = upfile.PostedFile.InputStream
' On lit le stream qui va remplir le tableau de bytes.
StreamObject.Read(FileByteArray, 0, FileLength)
' On récupère le nom du fichier.
iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("\")
sPhotoName =
upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1)
'On recréer l'image pour pouvoir la retailler.
Dim oImage As New Bitmap(StreamObject)
Dim oThumb As System.Drawing.Image
' On créer le thumbnail.
oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing)
' On récupère le chemin du dossier temporaire.
sPath = Server.MapPath("ImagesProduits\Temp\photo-p.jpg")
' On sauve au format jpg.
oThumb.Save(sPath, Imaging.ImageFormat.Jpeg)
' On lit le thumb dans un flux.
Dim StreamThumb As System.IO.Stream =
System.IO.File.OpenRead(sPath)
Dim ThumbLength As Long = StreamThumb.Length
' on créer un tableau de byte de la taille de l'image.
Dim ThumbByteArray(ThumbLength) As Byte
' on met le contenu du flux dans un tableau.
StreamThumb.Read(ThumbByteArray, 0, ThumbLength)
' On insère l'image dans la base.
cnDataBase.ConnectionString =
oConfig.GetSetting("ConnectionString")
cnDataBase.Open()
sqlCmd.Connection = cnDataBase
sqlCmd.CommandType = CommandType.StoredProcedure
sqlCmd.CommandText = "InsertImage"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
Le flux correspondant à la vignette ne me semble pas être fermé... -- Patrice
"Sylvain" a écrit dans le message de news:
Bonjour,
J'éxécute le code suivant lorsque je clique sur un bouton dans ma page
aspx.
Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique
une
2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une erreur générique s'est produit avec GDI+. Cette erreur arrive lorsque je sauve l'image, je ne comprends pas....
Voici le code:
Try
Dim oConfig As New CSO_Lib_V2.clsConfig Dim cnDataBase As New System.Data.SqlClient.SqlConnection Dim sqlCmd As New System.Data.SqlClient.SqlCommand Dim sPath As String Dim sPhotoName As String Dim iLastSlashIndex As Integer
' on enregistre les données dans un tableau de valeurs
binaires
Dim StreamObject As System.IO.Stream ' on récupère la taille de l'image. Dim FileLength As Long = upfile.PostedFile.ContentLength ' on créer un tableau de byte de la taille de l'image. Dim FileByteArray(FileLength) As Byte
' On récupère le fichier dans un stream StreamObject = upfile.PostedFile.InputStream ' On lit le stream qui va remplir le tableau de bytes. StreamObject.Read(FileByteArray, 0, FileLength) ' On récupère le nom du fichier. iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("") sPhotoName > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1) 'On recréer l'image pour pouvoir la retailler. Dim oImage As New Bitmap(StreamObject) Dim oThumb As System.Drawing.Image ' On créer le thumbnail. oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing) ' On récupère le chemin du dossier temporaire. sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg") ' On sauve au format jpg. oThumb.Save(sPath, Imaging.ImageFormat.Jpeg)
' On lit le thumb dans un flux. Dim StreamThumb As System.IO.Stream > System.IO.File.OpenRead(sPath) Dim ThumbLength As Long = StreamThumb.Length
' on créer un tableau de byte de la taille de l'image. Dim ThumbByteArray(ThumbLength) As Byte ' on met le contenu du flux dans un tableau. StreamThumb.Read(ThumbByteArray, 0, ThumbLength)
' On insère l'image dans la base. cnDataBase.ConnectionString > oConfig.GetSetting("ConnectionString") cnDataBase.Open() sqlCmd.Connection = cnDataBase sqlCmd.CommandType = CommandType.StoredProcedure sqlCmd.CommandText = "InsertImage"
Le flux correspondant à la vignette ne me semble pas être fermé...
--
Patrice
"Sylvain" <Sylvain@discussions.microsoft.com> a écrit dans le message de
news:CDE4D8F0-A014-4322-950A-531295676330@microsoft.com...
Bonjour,
J'éxécute le code suivant lorsque je clique sur un bouton dans ma page
aspx.
Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique
une
2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une
erreur générique s'est produit avec GDI+.
Cette erreur arrive lorsque je sauve l'image, je ne comprends pas....
Voici le code:
Try
Dim oConfig As New CSO_Lib_V2.clsConfig
Dim cnDataBase As New System.Data.SqlClient.SqlConnection
Dim sqlCmd As New System.Data.SqlClient.SqlCommand
Dim sPath As String
Dim sPhotoName As String
Dim iLastSlashIndex As Integer
' on enregistre les données dans un tableau de valeurs
binaires
Dim StreamObject As System.IO.Stream
' on récupère la taille de l'image.
Dim FileLength As Long = upfile.PostedFile.ContentLength
' on créer un tableau de byte de la taille de l'image.
Dim FileByteArray(FileLength) As Byte
' On récupère le fichier dans un stream
StreamObject = upfile.PostedFile.InputStream
' On lit le stream qui va remplir le tableau de bytes.
StreamObject.Read(FileByteArray, 0, FileLength)
' On récupère le nom du fichier.
iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("")
sPhotoName > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1)
'On recréer l'image pour pouvoir la retailler.
Dim oImage As New Bitmap(StreamObject)
Dim oThumb As System.Drawing.Image
' On créer le thumbnail.
oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing)
' On récupère le chemin du dossier temporaire.
sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg")
' On sauve au format jpg.
oThumb.Save(sPath, Imaging.ImageFormat.Jpeg)
' On lit le thumb dans un flux.
Dim StreamThumb As System.IO.Stream > System.IO.File.OpenRead(sPath)
Dim ThumbLength As Long = StreamThumb.Length
' on créer un tableau de byte de la taille de l'image.
Dim ThumbByteArray(ThumbLength) As Byte
' on met le contenu du flux dans un tableau.
StreamThumb.Read(ThumbByteArray, 0, ThumbLength)
' On insère l'image dans la base.
cnDataBase.ConnectionString > oConfig.GetSetting("ConnectionString")
cnDataBase.Open()
sqlCmd.Connection = cnDataBase
sqlCmd.CommandType = CommandType.StoredProcedure
sqlCmd.CommandText = "InsertImage"
Le flux correspondant à la vignette ne me semble pas être fermé... -- Patrice
"Sylvain" a écrit dans le message de news:
Bonjour,
J'éxécute le code suivant lorsque je clique sur un bouton dans ma page
aspx.
Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique
une
2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une erreur générique s'est produit avec GDI+. Cette erreur arrive lorsque je sauve l'image, je ne comprends pas....
Voici le code:
Try
Dim oConfig As New CSO_Lib_V2.clsConfig Dim cnDataBase As New System.Data.SqlClient.SqlConnection Dim sqlCmd As New System.Data.SqlClient.SqlCommand Dim sPath As String Dim sPhotoName As String Dim iLastSlashIndex As Integer
' on enregistre les données dans un tableau de valeurs
binaires
Dim StreamObject As System.IO.Stream ' on récupère la taille de l'image. Dim FileLength As Long = upfile.PostedFile.ContentLength ' on créer un tableau de byte de la taille de l'image. Dim FileByteArray(FileLength) As Byte
' On récupère le fichier dans un stream StreamObject = upfile.PostedFile.InputStream ' On lit le stream qui va remplir le tableau de bytes. StreamObject.Read(FileByteArray, 0, FileLength) ' On récupère le nom du fichier. iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("") sPhotoName > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1) 'On recréer l'image pour pouvoir la retailler. Dim oImage As New Bitmap(StreamObject) Dim oThumb As System.Drawing.Image ' On créer le thumbnail. oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing) ' On récupère le chemin du dossier temporaire. sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg") ' On sauve au format jpg. oThumb.Save(sPath, Imaging.ImageFormat.Jpeg)
' On lit le thumb dans un flux. Dim StreamThumb As System.IO.Stream > System.IO.File.OpenRead(sPath) Dim ThumbLength As Long = StreamThumb.Length
' on créer un tableau de byte de la taille de l'image. Dim ThumbByteArray(ThumbLength) As Byte ' on met le contenu du flux dans un tableau. StreamThumb.Read(ThumbByteArray, 0, ThumbLength)
' On insère l'image dans la base. cnDataBase.ConnectionString > oConfig.GetSetting("ConnectionString") cnDataBase.Open() sqlCmd.Connection = cnDataBase sqlCmd.CommandType = CommandType.StoredProcedure sqlCmd.CommandText = "InsertImage"
Merci Patrice pour cette réponse. Mais comment dois je fermer le flux ???
Merci. -- Sylvain Duvernay
"Patrice" a écrit :
Le flux correspondant à la vignette ne me semble pas être fermé... -- Patrice
"Sylvain" a écrit dans le message de news: > Bonjour, > > J'éxécute le code suivant lorsque je clique sur un bouton dans ma page aspx. > Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique une > 2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une > erreur générique s'est produit avec GDI+. > Cette erreur arrive lorsque je sauve l'image, je ne comprends pas.... > > Voici le code: > > Try > > Dim oConfig As New CSO_Lib_V2.clsConfig > Dim cnDataBase As New System.Data.SqlClient.SqlConnection > Dim sqlCmd As New System.Data.SqlClient.SqlCommand > Dim sPath As String > Dim sPhotoName As String > Dim iLastSlashIndex As Integer > > ' on enregistre les données dans un tableau de valeurs binaires > Dim StreamObject As System.IO.Stream > ' on récupère la taille de l'image. > Dim FileLength As Long = upfile.PostedFile.ContentLength > ' on créer un tableau de byte de la taille de l'image. > Dim FileByteArray(FileLength) As Byte > > ' On récupère le fichier dans un stream > StreamObject = upfile.PostedFile.InputStream > ' On lit le stream qui va remplir le tableau de bytes. > StreamObject.Read(FileByteArray, 0, FileLength) > ' On récupère le nom du fichier. > iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("") > sPhotoName > > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1) > 'On recréer l'image pour pouvoir la retailler. > Dim oImage As New Bitmap(StreamObject) > Dim oThumb As System.Drawing.Image > ' On créer le thumbnail. > oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing) > ' On récupère le chemin du dossier temporaire. > sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg") > ' On sauve au format jpg. > oThumb.Save(sPath, Imaging.ImageFormat.Jpeg) > > ' On lit le thumb dans un flux. > Dim StreamThumb As System.IO.Stream > > System.IO.File.OpenRead(sPath) > Dim ThumbLength As Long = StreamThumb.Length > > ' on créer un tableau de byte de la taille de l'image. > Dim ThumbByteArray(ThumbLength) As Byte > ' on met le contenu du flux dans un tableau. > StreamThumb.Read(ThumbByteArray, 0, ThumbLength) > > > ' On insère l'image dans la base. > cnDataBase.ConnectionString > > oConfig.GetSetting("ConnectionString") > cnDataBase.Open() > sqlCmd.Connection = cnDataBase > sqlCmd.CommandType = CommandType.StoredProcedure > sqlCmd.CommandText = "InsertImage" > > ' Image taille réelle. > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@PhotoName", sPhotoName)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@Photo", FileByteArray)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@TypeImage", > upfile.PostedFile.ContentType)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@Taille", FileLength)) > > ' Thumbnail. > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@ThumbName", sPhotoName)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@Thumb", ThumbByteArray)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@ThumbType", > upfile.PostedFile.ContentType)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@ThumbTaille", ThumbLength)) > > sqlCmd.ExecuteNonQuery() > cnDataBase.Close() > > 'On supprime les fichiers temporaires. > > ' Suppression des variables utilisées. > oConfig = Nothing > cnDataBase = Nothing > sqlCmd = Nothing > StreamObject = Nothing > FileByteArray = Nothing > oImage = Nothing > oThumb = Nothing > upfile.Dispose() > > Catch ex As Exception > Throw > Finally > > > -- > Sylvain Duvernay >
Merci Patrice pour cette réponse.
Mais comment dois je fermer le flux ???
Merci.
--
Sylvain Duvernay
"Patrice" a écrit :
Le flux correspondant à la vignette ne me semble pas être fermé...
--
Patrice
"Sylvain" <Sylvain@discussions.microsoft.com> a écrit dans le message de
news:CDE4D8F0-A014-4322-950A-531295676330@microsoft.com...
> Bonjour,
>
> J'éxécute le code suivant lorsque je clique sur un bouton dans ma page
aspx.
> Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique
une
> 2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une
> erreur générique s'est produit avec GDI+.
> Cette erreur arrive lorsque je sauve l'image, je ne comprends pas....
>
> Voici le code:
>
> Try
>
> Dim oConfig As New CSO_Lib_V2.clsConfig
> Dim cnDataBase As New System.Data.SqlClient.SqlConnection
> Dim sqlCmd As New System.Data.SqlClient.SqlCommand
> Dim sPath As String
> Dim sPhotoName As String
> Dim iLastSlashIndex As Integer
>
> ' on enregistre les données dans un tableau de valeurs
binaires
> Dim StreamObject As System.IO.Stream
> ' on récupère la taille de l'image.
> Dim FileLength As Long = upfile.PostedFile.ContentLength
> ' on créer un tableau de byte de la taille de l'image.
> Dim FileByteArray(FileLength) As Byte
>
> ' On récupère le fichier dans un stream
> StreamObject = upfile.PostedFile.InputStream
> ' On lit le stream qui va remplir le tableau de bytes.
> StreamObject.Read(FileByteArray, 0, FileLength)
> ' On récupère le nom du fichier.
> iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("")
> sPhotoName > > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1)
> 'On recréer l'image pour pouvoir la retailler.
> Dim oImage As New Bitmap(StreamObject)
> Dim oThumb As System.Drawing.Image
> ' On créer le thumbnail.
> oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing)
> ' On récupère le chemin du dossier temporaire.
> sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg")
> ' On sauve au format jpg.
> oThumb.Save(sPath, Imaging.ImageFormat.Jpeg)
>
> ' On lit le thumb dans un flux.
> Dim StreamThumb As System.IO.Stream > > System.IO.File.OpenRead(sPath)
> Dim ThumbLength As Long = StreamThumb.Length
>
> ' on créer un tableau de byte de la taille de l'image.
> Dim ThumbByteArray(ThumbLength) As Byte
> ' on met le contenu du flux dans un tableau.
> StreamThumb.Read(ThumbByteArray, 0, ThumbLength)
>
>
> ' On insère l'image dans la base.
> cnDataBase.ConnectionString > > oConfig.GetSetting("ConnectionString")
> cnDataBase.Open()
> sqlCmd.Connection = cnDataBase
> sqlCmd.CommandType = CommandType.StoredProcedure
> sqlCmd.CommandText = "InsertImage"
>
> ' Image taille réelle.
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@PhotoName", sPhotoName))
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@Photo", FileByteArray))
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@TypeImage",
> upfile.PostedFile.ContentType))
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@Taille", FileLength))
>
> ' Thumbnail.
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@ThumbName", sPhotoName))
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@Thumb", ThumbByteArray))
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@ThumbType",
> upfile.PostedFile.ContentType))
> sqlCmd.Parameters.Add(New
> System.Data.Sqlclient.SqlParameter("@ThumbTaille", ThumbLength))
>
> sqlCmd.ExecuteNonQuery()
> cnDataBase.Close()
>
> 'On supprime les fichiers temporaires.
>
> ' Suppression des variables utilisées.
> oConfig = Nothing
> cnDataBase = Nothing
> sqlCmd = Nothing
> StreamObject = Nothing
> FileByteArray = Nothing
> oImage = Nothing
> oThumb = Nothing
> upfile.Dispose()
>
> Catch ex As Exception
> Throw
> Finally
>
>
> --
> Sylvain Duvernay
>
Merci Patrice pour cette réponse. Mais comment dois je fermer le flux ???
Merci. -- Sylvain Duvernay
"Patrice" a écrit :
Le flux correspondant à la vignette ne me semble pas être fermé... -- Patrice
"Sylvain" a écrit dans le message de news: > Bonjour, > > J'éxécute le code suivant lorsque je clique sur un bouton dans ma page aspx. > Ce code fonctionne très bien la 1ere fois. Par contre lorsque je clique une > 2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type : une > erreur générique s'est produit avec GDI+. > Cette erreur arrive lorsque je sauve l'image, je ne comprends pas.... > > Voici le code: > > Try > > Dim oConfig As New CSO_Lib_V2.clsConfig > Dim cnDataBase As New System.Data.SqlClient.SqlConnection > Dim sqlCmd As New System.Data.SqlClient.SqlCommand > Dim sPath As String > Dim sPhotoName As String > Dim iLastSlashIndex As Integer > > ' on enregistre les données dans un tableau de valeurs binaires > Dim StreamObject As System.IO.Stream > ' on récupère la taille de l'image. > Dim FileLength As Long = upfile.PostedFile.ContentLength > ' on créer un tableau de byte de la taille de l'image. > Dim FileByteArray(FileLength) As Byte > > ' On récupère le fichier dans un stream > StreamObject = upfile.PostedFile.InputStream > ' On lit le stream qui va remplir le tableau de bytes. > StreamObject.Read(FileByteArray, 0, FileLength) > ' On récupère le nom du fichier. > iLastSlashIndex = upfile.PostedFile.FileName.LastIndexOf("") > sPhotoName > > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1) > 'On recréer l'image pour pouvoir la retailler. > Dim oImage As New Bitmap(StreamObject) > Dim oThumb As System.Drawing.Image > ' On créer le thumbnail. > oThumb = oImage.GetThumbnailImage(130, 90, Nothing, Nothing) > ' On récupère le chemin du dossier temporaire. > sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg") > ' On sauve au format jpg. > oThumb.Save(sPath, Imaging.ImageFormat.Jpeg) > > ' On lit le thumb dans un flux. > Dim StreamThumb As System.IO.Stream > > System.IO.File.OpenRead(sPath) > Dim ThumbLength As Long = StreamThumb.Length > > ' on créer un tableau de byte de la taille de l'image. > Dim ThumbByteArray(ThumbLength) As Byte > ' on met le contenu du flux dans un tableau. > StreamThumb.Read(ThumbByteArray, 0, ThumbLength) > > > ' On insère l'image dans la base. > cnDataBase.ConnectionString > > oConfig.GetSetting("ConnectionString") > cnDataBase.Open() > sqlCmd.Connection = cnDataBase > sqlCmd.CommandType = CommandType.StoredProcedure > sqlCmd.CommandText = "InsertImage" > > ' Image taille réelle. > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@PhotoName", sPhotoName)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@Photo", FileByteArray)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@TypeImage", > upfile.PostedFile.ContentType)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@Taille", FileLength)) > > ' Thumbnail. > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@ThumbName", sPhotoName)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@Thumb", ThumbByteArray)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@ThumbType", > upfile.PostedFile.ContentType)) > sqlCmd.Parameters.Add(New > System.Data.Sqlclient.SqlParameter("@ThumbTaille", ThumbLength)) > > sqlCmd.ExecuteNonQuery() > cnDataBase.Close() > > 'On supprime les fichiers temporaires. > > ' Suppression des variables utilisées. > oConfig = Nothing > cnDataBase = Nothing > sqlCmd = Nothing > StreamObject = Nothing > FileByteArray = Nothing > oImage = Nothing > oThumb = Nothing > upfile.Dispose() > > Catch ex As Exception > Throw > Finally > > > -- > Sylvain Duvernay >
Patrice
Donc un StreamThumb.Close.
Accessoirement, il est également possible de sauver l'image dans un flux (toujours avec la méthode Save) ce qui permettrait sans doute de se passer du fichier intermédiaire dans un deuxième temps.....
-- Patrice
"Sylvain" a écrit dans le message de news:
Merci Patrice pour cette réponse. Mais comment dois je fermer le flux ???
Merci. -- Sylvain Duvernay
"Patrice" a écrit :
> Le flux correspondant à la vignette ne me semble pas être fermé... > -- > Patrice > > "Sylvain" a écrit dans le message de > news: > > Bonjour, > > > > J'éxécute le code suivant lorsque je clique sur un bouton dans ma page > aspx. > > Ce code fonctionne très bien la 1ere fois. Par contre lorsque je
clique
> une > > 2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type :
une
> > erreur générique s'est produit avec GDI+. > > Cette erreur arrive lorsque je sauve l'image, je ne comprends pas.... > > > > Voici le code: > > > > Try > > > > Dim oConfig As New CSO_Lib_V2.clsConfig > > Dim cnDataBase As New System.Data.SqlClient.SqlConnection > > Dim sqlCmd As New System.Data.SqlClient.SqlCommand > > Dim sPath As String > > Dim sPhotoName As String > > Dim iLastSlashIndex As Integer > > > > ' on enregistre les données dans un tableau de valeurs > binaires > > Dim StreamObject As System.IO.Stream > > ' on récupère la taille de l'image. > > Dim FileLength As Long = upfile.PostedFile.ContentLength > > ' on créer un tableau de byte de la taille de l'image. > > Dim FileByteArray(FileLength) As Byte > > > > ' On récupère le fichier dans un stream > > StreamObject = upfile.PostedFile.InputStream > > ' On lit le stream qui va remplir le tableau de bytes. > > StreamObject.Read(FileByteArray, 0, FileLength) > > ' On récupère le nom du fichier. > > iLastSlashIndex upfile.PostedFile.FileName.LastIndexOf("") > > sPhotoName > > > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1) > > 'On recréer l'image pour pouvoir la retailler. > > Dim oImage As New Bitmap(StreamObject) > > Dim oThumb As System.Drawing.Image > > ' On créer le thumbnail. > > oThumb = oImage.GetThumbnailImage(130, 90, Nothing,
Nothing)
> > ' On récupère le chemin du dossier temporaire. > > sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg") > > ' On sauve au format jpg. > > oThumb.Save(sPath, Imaging.ImageFormat.Jpeg) > > > > ' On lit le thumb dans un flux. > > Dim StreamThumb As System.IO.Stream > > > System.IO.File.OpenRead(sPath) > > Dim ThumbLength As Long = StreamThumb.Length > > > > ' on créer un tableau de byte de la taille de l'image. > > Dim ThumbByteArray(ThumbLength) As Byte > > ' on met le contenu du flux dans un tableau. > > StreamThumb.Read(ThumbByteArray, 0, ThumbLength) > > > > > > ' On insère l'image dans la base. > > cnDataBase.ConnectionString > > > oConfig.GetSetting("ConnectionString") > > cnDataBase.Open() > > sqlCmd.Connection = cnDataBase > > sqlCmd.CommandType = CommandType.StoredProcedure > > sqlCmd.CommandText = "InsertImage" > > > > ' Image taille réelle. > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@PhotoName", sPhotoName)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@Photo", FileByteArray)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@TypeImage", > > upfile.PostedFile.ContentType)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@Taille", FileLength)) > > > > ' Thumbnail. > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@ThumbName", sPhotoName)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@Thumb", ThumbByteArray)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@ThumbType", > > upfile.PostedFile.ContentType)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@ThumbTaille", ThumbLength)) > > > > sqlCmd.ExecuteNonQuery() > > cnDataBase.Close() > > > > 'On supprime les fichiers temporaires. > > > > ' Suppression des variables utilisées. > > oConfig = Nothing > > cnDataBase = Nothing > > sqlCmd = Nothing > > StreamObject = Nothing > > FileByteArray = Nothing > > oImage = Nothing > > oThumb = Nothing > > upfile.Dispose() > > > > Catch ex As Exception > > Throw > > Finally > > > > > > -- > > Sylvain Duvernay > > > > >
Donc un StreamThumb.Close.
Accessoirement, il est également possible de sauver l'image dans un flux
(toujours avec la méthode Save) ce qui permettrait sans doute de se passer
du fichier intermédiaire dans un deuxième temps.....
--
Patrice
"Sylvain" <Sylvain@discussions.microsoft.com> a écrit dans le message de
news:E7A9CF37-4A67-4D21-8F8E-7E563FB69106@microsoft.com...
Merci Patrice pour cette réponse.
Mais comment dois je fermer le flux ???
Merci.
--
Sylvain Duvernay
"Patrice" a écrit :
> Le flux correspondant à la vignette ne me semble pas être fermé...
> --
> Patrice
>
> "Sylvain" <Sylvain@discussions.microsoft.com> a écrit dans le message de
> news:CDE4D8F0-A014-4322-950A-531295676330@microsoft.com...
> > Bonjour,
> >
> > J'éxécute le code suivant lorsque je clique sur un bouton dans ma page
> aspx.
> > Ce code fonctionne très bien la 1ere fois. Par contre lorsque je
clique
> une
> > 2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type :
une
> > erreur générique s'est produit avec GDI+.
> > Cette erreur arrive lorsque je sauve l'image, je ne comprends pas....
> >
> > Voici le code:
> >
> > Try
> >
> > Dim oConfig As New CSO_Lib_V2.clsConfig
> > Dim cnDataBase As New System.Data.SqlClient.SqlConnection
> > Dim sqlCmd As New System.Data.SqlClient.SqlCommand
> > Dim sPath As String
> > Dim sPhotoName As String
> > Dim iLastSlashIndex As Integer
> >
> > ' on enregistre les données dans un tableau de valeurs
> binaires
> > Dim StreamObject As System.IO.Stream
> > ' on récupère la taille de l'image.
> > Dim FileLength As Long = upfile.PostedFile.ContentLength
> > ' on créer un tableau de byte de la taille de l'image.
> > Dim FileByteArray(FileLength) As Byte
> >
> > ' On récupère le fichier dans un stream
> > StreamObject = upfile.PostedFile.InputStream
> > ' On lit le stream qui va remplir le tableau de bytes.
> > StreamObject.Read(FileByteArray, 0, FileLength)
> > ' On récupère le nom du fichier.
> > iLastSlashIndex upfile.PostedFile.FileName.LastIndexOf("")
> > sPhotoName > > > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1)
> > 'On recréer l'image pour pouvoir la retailler.
> > Dim oImage As New Bitmap(StreamObject)
> > Dim oThumb As System.Drawing.Image
> > ' On créer le thumbnail.
> > oThumb = oImage.GetThumbnailImage(130, 90, Nothing,
Nothing)
> > ' On récupère le chemin du dossier temporaire.
> > sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg")
> > ' On sauve au format jpg.
> > oThumb.Save(sPath, Imaging.ImageFormat.Jpeg)
> >
> > ' On lit le thumb dans un flux.
> > Dim StreamThumb As System.IO.Stream > > > System.IO.File.OpenRead(sPath)
> > Dim ThumbLength As Long = StreamThumb.Length
> >
> > ' on créer un tableau de byte de la taille de l'image.
> > Dim ThumbByteArray(ThumbLength) As Byte
> > ' on met le contenu du flux dans un tableau.
> > StreamThumb.Read(ThumbByteArray, 0, ThumbLength)
> >
> >
> > ' On insère l'image dans la base.
> > cnDataBase.ConnectionString > > > oConfig.GetSetting("ConnectionString")
> > cnDataBase.Open()
> > sqlCmd.Connection = cnDataBase
> > sqlCmd.CommandType = CommandType.StoredProcedure
> > sqlCmd.CommandText = "InsertImage"
> >
> > ' Image taille réelle.
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@PhotoName", sPhotoName))
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@Photo", FileByteArray))
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@TypeImage",
> > upfile.PostedFile.ContentType))
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@Taille", FileLength))
> >
> > ' Thumbnail.
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@ThumbName", sPhotoName))
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@Thumb", ThumbByteArray))
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@ThumbType",
> > upfile.PostedFile.ContentType))
> > sqlCmd.Parameters.Add(New
> > System.Data.Sqlclient.SqlParameter("@ThumbTaille", ThumbLength))
> >
> > sqlCmd.ExecuteNonQuery()
> > cnDataBase.Close()
> >
> > 'On supprime les fichiers temporaires.
> >
> > ' Suppression des variables utilisées.
> > oConfig = Nothing
> > cnDataBase = Nothing
> > sqlCmd = Nothing
> > StreamObject = Nothing
> > FileByteArray = Nothing
> > oImage = Nothing
> > oThumb = Nothing
> > upfile.Dispose()
> >
> > Catch ex As Exception
> > Throw
> > Finally
> >
> >
> > --
> > Sylvain Duvernay
> >
>
>
>
Accessoirement, il est également possible de sauver l'image dans un flux (toujours avec la méthode Save) ce qui permettrait sans doute de se passer du fichier intermédiaire dans un deuxième temps.....
-- Patrice
"Sylvain" a écrit dans le message de news:
Merci Patrice pour cette réponse. Mais comment dois je fermer le flux ???
Merci. -- Sylvain Duvernay
"Patrice" a écrit :
> Le flux correspondant à la vignette ne me semble pas être fermé... > -- > Patrice > > "Sylvain" a écrit dans le message de > news: > > Bonjour, > > > > J'éxécute le code suivant lorsque je clique sur un bouton dans ma page > aspx. > > Ce code fonctionne très bien la 1ere fois. Par contre lorsque je
clique
> une > > 2e fois sans avoir raffraichit ma page, j'obtiens une erreur du type :
une
> > erreur générique s'est produit avec GDI+. > > Cette erreur arrive lorsque je sauve l'image, je ne comprends pas.... > > > > Voici le code: > > > > Try > > > > Dim oConfig As New CSO_Lib_V2.clsConfig > > Dim cnDataBase As New System.Data.SqlClient.SqlConnection > > Dim sqlCmd As New System.Data.SqlClient.SqlCommand > > Dim sPath As String > > Dim sPhotoName As String > > Dim iLastSlashIndex As Integer > > > > ' on enregistre les données dans un tableau de valeurs > binaires > > Dim StreamObject As System.IO.Stream > > ' on récupère la taille de l'image. > > Dim FileLength As Long = upfile.PostedFile.ContentLength > > ' on créer un tableau de byte de la taille de l'image. > > Dim FileByteArray(FileLength) As Byte > > > > ' On récupère le fichier dans un stream > > StreamObject = upfile.PostedFile.InputStream > > ' On lit le stream qui va remplir le tableau de bytes. > > StreamObject.Read(FileByteArray, 0, FileLength) > > ' On récupère le nom du fichier. > > iLastSlashIndex upfile.PostedFile.FileName.LastIndexOf("") > > sPhotoName > > > upfile.PostedFile.FileName.Substring(iLastSlashIndex + 1) > > 'On recréer l'image pour pouvoir la retailler. > > Dim oImage As New Bitmap(StreamObject) > > Dim oThumb As System.Drawing.Image > > ' On créer le thumbnail. > > oThumb = oImage.GetThumbnailImage(130, 90, Nothing,
Nothing)
> > ' On récupère le chemin du dossier temporaire. > > sPath = Server.MapPath("ImagesProduitsTempphoto-p.jpg") > > ' On sauve au format jpg. > > oThumb.Save(sPath, Imaging.ImageFormat.Jpeg) > > > > ' On lit le thumb dans un flux. > > Dim StreamThumb As System.IO.Stream > > > System.IO.File.OpenRead(sPath) > > Dim ThumbLength As Long = StreamThumb.Length > > > > ' on créer un tableau de byte de la taille de l'image. > > Dim ThumbByteArray(ThumbLength) As Byte > > ' on met le contenu du flux dans un tableau. > > StreamThumb.Read(ThumbByteArray, 0, ThumbLength) > > > > > > ' On insère l'image dans la base. > > cnDataBase.ConnectionString > > > oConfig.GetSetting("ConnectionString") > > cnDataBase.Open() > > sqlCmd.Connection = cnDataBase > > sqlCmd.CommandType = CommandType.StoredProcedure > > sqlCmd.CommandText = "InsertImage" > > > > ' Image taille réelle. > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@PhotoName", sPhotoName)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@Photo", FileByteArray)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@TypeImage", > > upfile.PostedFile.ContentType)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@Taille", FileLength)) > > > > ' Thumbnail. > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@ThumbName", sPhotoName)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@Thumb", ThumbByteArray)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@ThumbType", > > upfile.PostedFile.ContentType)) > > sqlCmd.Parameters.Add(New > > System.Data.Sqlclient.SqlParameter("@ThumbTaille", ThumbLength)) > > > > sqlCmd.ExecuteNonQuery() > > cnDataBase.Close() > > > > 'On supprime les fichiers temporaires. > > > > ' Suppression des variables utilisées. > > oConfig = Nothing > > cnDataBase = Nothing > > sqlCmd = Nothing > > StreamObject = Nothing > > FileByteArray = Nothing > > oImage = Nothing > > oThumb = Nothing > > upfile.Dispose() > > > > Catch ex As Exception > > Throw > > Finally > > > > > > -- > > Sylvain Duvernay > > > > >