228 messaggi dal 01 agosto 2003
Ciao
come faccio a trasformare i dati binari in immagine?

Grazie

victor
3.938 messaggi dal 28 gennaio 2003
salvarla su disco?
visualizzarla in una pagina web?
trasformare il vettore di byte in Bitmap?

Pietro
228 messaggi dal 01 agosto 2003
Ciao Pietro
allora io con questo codice
riesco ad inserire un documento dentro un db access (anche se mi piacerebbe inserirlo in mssql)

<%@ Page Language="VB" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
    
    Private Sub BtnUp_Click(ByVal s As Object, ByVal e As EventArgs)
        Dim dimensione As Integer = inputFile.PostedFile.ContentLength
        If (dimensione > 0) Then
            Dim strsql As String
            Dim db As String
            Dim FileByteArray() As Byte = New Byte((dimensione) - 1) {}
            Dim StreamObject As Stream = inputFile.PostedFile.InputStream
            StreamObject.Read(FileByteArray, 0, dimensione)
            db = "immagini.mdb"
      
    
            Dim myconnection As new OleDbConnection   ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("immagini.mdb"))
            strsql = "insert into Tabella1(descrizione, immagine, nome, size2, contenttype) values(?, ?, ?, ?, ?)"
            Dim mycommand As OleDbCommand = New OleDbCommand(strsql, myconnection)
           mycommand.Parameters.Add("@descrizione", OleDbType.VarChar, 100).Value=descrizione.Text
    mycommand.Parameters.Add("@immagine", OleDbType.Binary, dimensione).Value=FileByteArray
    mycommand.Parameters.Add("@nome", OleDbType.VarChar, 100).Value=Path.GetFileName(inputFile.PostedFile.FileName)
    mycommand.Parameters.Add("@size2", OleDbType.Integer, 100).Value=dimensione
    mycommand.Parameters.Add("@contenttype", OleDbType.VarChar, 100).Value=inputFile.PostedFile.ContentType
            myconnection.Open
            mycommand.ExecuteNonQuery
            myconnection.Close
            messaggio.Text = "OK!"
        Else
            messaggio.Text = "Nessun file selezionato!"
        End If
        
    End Sub
</script>
<form enctype="multipart/form-data" runat="server">
<strong>UTILIY PER L"UPLOAD DI IMMAGINI IN UN DATABASE IN FORMATO ACCESS</strong>
<div id="Results" align="center" runat="server" />
<p align="center">

Seleziona un"immagine sul tuo HD quindi clicca su upload:<br />
<input id="inputFile" type="file" size="40" runat="server" /><br />
Descrizione: <asp:TextBox id="descrizione" runat="server" Width="259px"></asp:TextBox>
<br /><asp:label id="messaggio" runat="server" Font-Bold="True"></asp:label></p>
<input type="button" id="BtnUp" value="Upload!" runat="server" onserverclick="BtnUp_Click" />
</form>




ho provato a leggere il tutto cosi


<%@ Page Language="VB" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.IO" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">



sub page_load (obj as object, e as eventargs)
Dim objconn As new OleDbConnection   ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("immagini.mdb"))






      dim objcmd_ver34dsmitns as new oledbcommand (" select  * from tabella1 ", objconn)

  dim read34dsmitns as oledbdatareader
  
  objconn.open
  read34dsmitns=objcmd_ver34dsmitns.executereader
  
  
  dim prot34dsmitns as string

    
  while read34dsmitns.read
  
  'If Not read34dsmitns("chiave") Is System.DBNull.Value Then
'prot34dsmitns = read34dsmitns("chiave") 
'end if


  Response.Clear
    Response.ClearContent
    Response.ContentType = read34dsmitns("contenttype").ToString
    Response.BinaryWrite(CType(read34dsmitns("immagine"),Byte()))



  end while
  read34dsmitns.close
  objcmd_ver34dsmitns.connection.close()








end sub








</script>













</script>



pero' mi da questo errore (spero tu mi possa dare una mano)



Unable to cast object of type 'System.String' to type 'System.Byte[]'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Byte[]'.

Source Error:


Line 37:     Response.ClearContent
Line 38:     Response.ContentType = read34dsmitns("contenttype").ToString
Line 39:     Response.BinaryWrite(CType(read34dsmitns("immagine"),Byte()))
Line 40: 
Line 41: 

victor
3.938 messaggi dal 28 gennaio 2003
non posso guardare tutto quel codice, ma ti propongo quello di sotto, funzionante che, se ti piace, lo adatterai alle tue esigenze.

nella pagina metto, per esempio:

<img alt="" src="?p_img=1" />


src richiama la stessa pagina passando però un parametro

nel codice ho
    Private Sub prove_a_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim p_img As String = l.RequestParams("p_img")
        If p_img = "1" Then
            LeggiImmagineCampoBlob()
        End If

    End Sub

    Private Sub LeggiImmagineCampoBlob()
        Using con As New OleDbConnection(gl.StringaConnessioneTest)
            con.Open()
            Dim sql As String = "select immagine_ingrandita from tbimmagini where [id] = 0"
            Dim command As New OleDbCommand(sql, con)
            Dim buffer As Byte() = CType(command.ExecuteScalar(), Byte())

            If buffer IsNot Nothing Then
                Response.Clear()
                Response.ClearContent()
                Response.AddHeader("Content-Length", buffer.Length.ToString)
                If buffer.Length > 0 Then
                    Response.BinaryWrite(buffer)
                End If

                Response.Flush() : Response.End()

            End If

        End Using

    End Sub


Pietro
228 messaggi dal 01 agosto 2003
Ciao Pietro
adesso provo il tuo codice.
Una domanda
tu che ne pensi sul fatto che per evitare il download diretto tramite url
venisse cambiato il nome dei documenti?

grazie

victor
3.938 messaggi dal 28 gennaio 2003
Ti spiego come faccio io.
Lo scaricamento di un documento non lo faccio per via diretta, con un url, per esempio:

http://miosito/documento.pdf

Ma attraverso una risorsa, per esempio una pagina aspx che restituisce il documento in binario.

es:
http://miosito/pagina.aspx?doc=1

La pagina.aspx è protetta e ci può accedere solo chi si è autenticato e ha i necessari privilegi.

E' un po' come quando scarichi un'immagine archiviata in database

<img src=pagina.aspx?parametro=valore >
Modificato da pietro09 il 09 luglio 2020 10:53 -

Pietro
228 messaggi dal 01 agosto 2003
tu come fai a restituire il documento in binario?
lo salvi in binario su un database?

victor
228 messaggi dal 01 agosto 2003
Ciao Pietro ho provato ad usare il tuo codice
  
 Private Sub prove_a_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim p_img As String = l.RequestParams("p_img")
        If p_img = "l" Then
            LeggiImmagineCampoBlob()
        End If

    End Sub

    Private Sub LeggiImmagineCampoBlob()
        Using con As New OleDbConnection(gl.StringaConnessioneTest)
            con.Open()
            Dim sql As String = "select immagine from Tabella1 where [id] = 0"
            Dim command As New OleDbCommand(sql, con)
            Dim buffer As Byte() = CType(command.ExecuteScalar(), Byte())

            If buffer IsNot Nothing Then
                Response.Clear()
                Response.ClearContent()
                Response.AddHeader("Content-Length", buffer.Length.ToString)
                If buffer.Length > 0 Then
                    Response.BinaryWrite(buffer)
                End If

                Response.Flush() : Response.End()

            End If

        End Using

    End Sub



</script>





<img alt="" src="?p_img=l" />







pero' mi da questo errore
Compilation Error 
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: BC30451: 'l' is not declared. It may be inaccessible due to its protection level.

Source Error:



Line 10: 
Line 11:   Private Sub prove_a_Load(sender As Object, e As EventArgs) Handles Me.Load
Line 12:         Dim p_img As String = l.RequestParams("p_img")
Line 13:         If p_img = "l" Then
Line 14:             LeggiImmagineCampoBlob()

victor

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.