3.938 messaggi dal 28 gennaio 2003
Non so, se debbo vedere l'immagine da remoto:

<img alt="" src="data:image/jpg;base64,<%=img1() %>" />

e nel codice
    Protected Function img1() As String
        Dim url = "http://localhost/handler/.img?p_img=/tmp/prova.jpg&p_width=500"

        Using w As New System.Net.WebClient()
            Dim buffer As Byte() = w.DownloadData(url)
            Dim sBase64 As String = Convert.ToBase64String(buffer)
            Return sBase64
        End Using

    End Function


se la debbo leggere da locale basta mettere buffer = File.ReadAllBytes(...

Pietro
126 messaggi dal 01 febbraio 2017
jjchuck ha scritto:
Ciao
in un vecchio progetto con vb associo un immagine ad un listview

If e.Item.ItemType = ListViewItemType.DataItem Then
            Dim rigaDati = DirectCast(e.Item.DataItem, DataRowView)
            Dim path = Replace("~/Articoli/Immagine.ashx?FileName=" & rigaDati("ImageName"), "\\percorso\", "")
            DirectCast(e.Item.FindControl("myIMG"), System.Web.UI.WebControls.Image).ImageUrl = path
        End If


Ho bisogno di fare la conversione in base64 per poter creare un pdf con le immagini ovviamente

Forse è semplice ma non riesco a capire come fare

grazie
Modificato da jjchuck il 03 febbraio 2020 15:34 -

Ho l'impressione che stai facendo un poco di confusione, o nn ci stiamo capendo più nulla noi ...
Il tuo "vecchio progetto VB" gira su client o su server ?
Contestualizza l'ambiente ...
Il file che devi convertire, si trova su pc locale, sul server, su DB o su un percorso remoto ? ... contestualizza la risorsa ... e poi verrà la soluzione di conseguenza.

Ciao.
Gino.

UNSTRING identifier-1 id-2 id-3
DELIMITED BY [ALL] OR [ALL] literal-1 lit-2
INTO {id-4 [DELIMITER IN id-5]
[COUNT IN id-6]}
[WITH POINTER id-7]
[TALLYING IN id-8]
[ON OVERFLOW imperative-statement-1]
[NOT ON OVERFLOW imper-2]
[END-UNSTRING]
941 messaggi dal 11 febbraio 2013
Perdonate il ritardo
Si sono stato poco chiaro comunque questo funziona con la cartella 'Foto' dentro al progetto nel server che ospita il sito

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Image1.ImageUrl = "data:image/jpeg;base64," & ConvertFileToBase64(Server.MapPath("../Foto/Foto1.jpg"))
    End Sub
    Public Function ConvertFileToBase64(ByVal fileName As String) As String
        Return Convert.ToBase64String(System.IO.File.ReadAllBytes(fileName))
    End Function


Ora debbo usare questo codice funzionante nel listview dove mostro il catalogo articoli con molte altre info
(esistenze,impegnato...ecc)
Si tratta di una intranet in rete aziendale su un server con windows7
E' un sito web NET standard 4.0
Le foto le pesco da una cartella su server (dove è installato il gestionale e non dove eseguo il sito) e le mostro con un handler Immagine.ashx da percorso di rete:
\\server\GESTIONALE\Media\Foto\articolo.jpg
Protected Sub lvArticoli_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
        If e.Item.ItemType = ListViewItemType.DataItem Then
            Dim rigaDati = DirectCast(e.Item.DataItem, DataRowView)
            Dim path = Replace("~/_Articoli/Immagine.ashx?FileName=" & rigaDati("ImageName"), "\\server\GESTIONALE\Media\Foto\", "")
            DirectCast(e.Item.FindControl("myIMG"), System.Web.UI.WebControls.Image).ImageUrl = path
        End If
    End Sub


Ora non mi è semplice modificare questo codice...
Spero di aver chiarito meglio
grazie a tutti per l'aiuto
Modificato da jjchuck il 07 febbraio 2020 10:03 -
461 messaggi dal 08 febbraio 2009
Allora, temo il tuo problema sia ben diverso dalla conversione in base64 di un file.

Come prima cosa, il vecchio codice leggeva l'immagine da una cartella del sito, quindi questo consentiva di:
- Leggerla col codice Server.MapPath
- Essere quasi certo di avere il permesso di leggere suddetto file


Ora stai provando a leggere un file di rete.

Il codice che ti serve è pressochè identico, devi però preoccuparti:
- Che l'utente con cui gira IIS abbia i permessi di accedere alla cartella di rete
- Avere il percorso completo del file, poichè non è più una sotto cartella del sito


Grosso modo il codice dovrebbe essere questo:


   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Image1.ImageUrl = "data:image/jpeg;base64," & ConvertFileToBase64(<NomeCompletoDelFile>))
    End Sub
    Public Function ConvertFileToBase64(ByVal fileName As String) As String
        Return Convert.ToBase64String(System.IO.File.ReadAllBytes(fileName))
    End Function

941 messaggi dal 11 febbraio 2013
Perdonami ma non ti seguo
La pagina con il listview è funzionante da quando l'ho realizzata e non ce nessun problema

Inoltre il codice che hai scritto è identico a quello suggerito dagli altri che tra l'altro ho appena postato

Il problema è applicarlo al listview con le foto nel server
3.938 messaggi dal 28 gennaio 2003
non ho potuto provare, ma dal tuo codice

If e.Item.ItemType = ListViewItemType.DataItem Then
  Dim rigaDati = DirectCast(e.Item.DataItem, DataRowView)
  Dim path = Replace("~/Articoli/Immagine.ashx?FileName=" & rigaDati("ImageName"), "\\percorso\", "")
  DirectCast(e.Item.FindControl("myIMG"), System.Web.UI.WebControls.Image).ImageUrl = path
End If


non puoi fare questa sostituzione?
If e.Item.ItemType = ListViewItemType.DataItem Then
  Dim rigaDati = DirectCast(e.Item.DataItem, DataRowView)
  Dim path = Replace("~/Articoli/Immagine.ashx?FileName=" & rigaDati("ImageName"), "\\percorso\", "")
  
  Dim sBase64 As String = "data:image/jpg;base64,"
  
  Using w As New System.Net.WebClient()
    Dim buffer As Byte() = w.DownloadData(path)
    sBase64 &= Convert.ToBase64String(buffer)
  End Using
  
  DirectCast(e.Item.FindControl("myIMG"), System.Web.UI.WebControls.Image).ImageUrl = sBase64
End If

Pietro
941 messaggi dal 11 febbraio 2013
Ciao Pietro
avevo già provato ma ottengo l'errore

Caratteri non validi nel percorso.Riferimento a un oggetto non impostato su un'istanza di oggetto.

Qualcosa non va ma non capisco cosa

Grazie 1000 per l'aiuto
Modificato da jjchuck il 10 febbraio 2020 16:32 -
3.938 messaggi dal 28 gennaio 2003
ok, ma se vai in debug, la variabile path cosa contiene?

Pietro

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.