Salut akouavi,
J'ai fait ça dans avec des pdf stockés dans une base SQL server.
Mais je pense que le principe est le même (champ de type blob, ou Fichier je crois dans Acces
)
Mon code est en ASP.Net, mais il est facilement convertible en VB. Par contre, je sais pas si c'est faisable en JS (peut-être via AJAX).
'================Code Principal ======================
'==========A mettre sur le clic d'un bouton par ex ============
Dim l_str_SQL As String
Dim l_byt_Pdf As Byte()
Dim l_str_Script As String
Dim l_str_Repertoire As String = "Mon repertoire"
Dim l_str_NomFichier As String
Dim fil_FichierPDF As System.IO.FileStream
l_str_SQL = "SELECT MonChamp Fichier "
l_str_SQL += "FROM MaTable "
l_str_SQL += "WHERE MesConditions"
'Attention, il faut être sûr que tu stockes tout le fichier dans ton champ (en-tête comprise)
l_byt_Pdf = SqlBlob2Buffer(l_str_SQL)
l_str_NomFichier = "MonFichier.MonExtension" 'On pourrai récupérer ce nom depuis la BD
fil_FichierPDF = File.Create(l_str_Repertoire & "\" & l_str_NomFichier)
With fil_FichierPDF
.Write(l_byt_Pdf, 0, l_byt_Pdf.Length)
.Close()
End With
'================Fin Code Principal ======================
'Fonction qui convertit un champ Blob en tableau de bits
Private Function SqlBlob2Buffer(ByVal p_str_SQL As String) As Byte()
Dim PictureCol As Integer = 0 'Colonne dans laquelle on va lire les données
Dim cn As New SqlConnection("MaChaineDeConnexion")
Dim cmd As New SqlCommand(p_str_SQL, cn)
Dim dr As SqlDataReader = cmd.ExecuteReader()
cn.Open()
dr.Read()
Dim b(dr.GetBytes(PictureCol, 0, Nothing, 0, Integer.MaxValue) - 1) As Byte
dr.GetBytes(PictureCol, 0, b, 0, b.Length)
dr.Close()
cn.Close()
Return b
End Function
Petite explication sur GetBytes :
Cette fonction lit les données sous forme de bits du datareader dans la colonne spécifiée (premier paramètre), les stocke dans le tableau de bits passé en paramètre, et renvoie le nombre de bits lus.
Dans le premier appel, on s'en sert pour savoir combien de bits il y a, sans stocker les données dans un buffer, et dans le second appel, on lit vraiment les données pour les stocker dans le buffer.
Consulte MSDN pour de plus amples infos ^o^
@peluche, et bon dév'
DA