2010-09-23 6 views
0

c'est moi votre extraodinaire junior programmeurasp.net stocker des images

Je suis en train d'afficher une image de ma base de données, mais lorsque je tente d'extraire le fichier, il ne contient que 6 octets de données qui provoque mon programme de jeter une erreur. Mon instructeur m'a informé que le fichier est trop petit pour une image, ce qui me laisse croire que je ne le garde pas correctement. Je serais très aimable si quelqu'un pouvait identifier un code qui pourrait causer cela.

cela est ma fonction détourner/stockage du fichier

Protected Sub btnUpload_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpload.Click 
    Dim _image As Byte() 
    _image = FileUpload1.FileBytes 
    Dim conn As New SqlConnection 
    Dim cmd As New SqlCommand 

    Dim dr As SqlDataReader 

    conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
    cmd.Connection = conn 
    cmd.CommandText = "Insert INTO mrg_Image(Image, UserId) VALUES('@image', @id)" 

    cmd.Parameters.AddWithValue("@image", FileUpload1.FileBytes) 
    cmd.Parameters.AddWithValue("@id", 4) 


    conn.Open() 
    dr = cmd.ExecuteReader 
    conn.Close() 

    'FileUpload1.SaveAs() 

End Sub 



    conn.Open() 

file_bytes est la variable qui contient 6 octets en opposition à un millier + dont une image doit avoir

Dim file_bytes As Byte() = cmd.ExecuteScalar()   
    Dim file_bytes_memory_stream As New System.IO.MemoryStream(file_bytes) 
    Dim file_bytes_stream As System.IO.Stream = DirectCast(file_bytes_memory_stream, System.IO.Stream) 

    Dim the_image As New System.Drawing.Bitmap(file_bytes_stream) 

    context.Response.ContentType = "image/jpg" 
    the_image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)   

    conn.Close() 
End Sub 
+0

Est-ce que 'HasFile' est vrai? Quelle est la taille du tableau FileBytes avant de l'enregistrer dans la base de données? – Will

+0

Quel type de champ est le champ 'Image'? – CodingGorilla

+0

Quel type de données correspond au champ Image, et pourquoi les valeurs uniques entourent-elles la valeur du paramètre image? –

Répondre

0

Essayez de remplacer '@image' par @image.

Remplace également ExecuteReader par ExecuteNonQuery.


Je ne connaissais pas la propriété FileBytes, je l'ai toujours fait donc ...

Dim _Image (FileUpload1.PostedFile.InputStream.Length) As Byte FileUpload1.PostedFile.InputStream .Lire (_image, 0, _image.Length)

+0

FileBytes a été ajouté dans 2.0 –

+0

Je reçois quelques erreurs quand j'essaye de convertir en un executeNonQuery dit, "Valeur du type," entier "ne peut pas être converti en system.data.sqlclient.sqlDatareader – PaulR

+0

Je viens essayé d'enlever les guillemets simples et voir ce qui se passe et j'obtiens une nouvelle erreur quand j'essaie de sélectionner l'image de la base de données.l'erreur est: Un caractère non valide a été trouvé dans le contenu du texte. Erreur lors du traitement de la ressource 'http: // localhost: 1459/VS/images.ashx'. Je voudrais pouvoir mettre une étiquette de rupture dans ma page ashx. – PaulR

0

Essayez cette

cmd.CommandText = "Insert INTO mrg_Image(Image, UserId) VALUES(@image, @id)" 
cmd.Parameters.Add("@image", SqlDbType.Image) 
cmd.Parameters("@image") = FileUpload1.FileBytes 
cmd.Parameters.AddWithValue("@id", 4) 

Modifier Supprimé ";" Oublié c'était vb

Éditer2 Modifié de [] à(). encore oublié mon VB

+0

obtenu plusieurs lignes bleues - 1er dire que sqldbType.Image n'est pas déclaré et sur le cmd.Paramaters ["image"] = FileUpload1.FileBytes il dit que l'accès de propriété doit affecter à la propriété ou utiliser ses valeurs – PaulR

+0

@ user412318: Do not Sachez pourquoi vous obtenez sqldbType.Image n'est pas déclaré. Il a été là depuis 1.1. J'ai corrigé le second qui était facile –

Questions connexes