DynaZip : MEMTOMEM

DynaZip : MEMTOMEM - ASP - Programmation

Marsh Posté le 31-03-2005 à 17:50:27    

Bonjour,
 
J'utilise l'objet "DynaZip". J'aimerais savoir comment faire fonctionner le mode "Memory to memory" pour créer des data GZ à partir de data non compressées.
 
En effet, je suis actuellement en ASP (je peux aussi faire un module en VB s'il le faut), et je génère un fichier plat d'extraction d'une base.
Je veux pouvoir le GZiper à la volée, sans passer par un fichier temporaire.
Seulement, je n'arrive désespérément pas à faire marcher cette daube dans ce mode, à chaque fois l'ordinateur part en live et je dois rebooter. Dans la doc, c'est plus qu'obscure et y'a pas un seul exemple qui traîte de ce cas.
 
Si qq1 avait déjà fait ça, et pouvait me dire comment faire... :sweat:

Reply

Marsh Posté le 31-03-2005 à 17:50:27   

Reply

Marsh Posté le 01-04-2005 à 11:53:03    

Bon, j'ai réussi à m'en sortir, mais sans faire vraiment le "MEMTOMEM".
 
Je compresse le contenu de mon fichier depuis la mémoire dans un fichier sur le disque, puis j'affiche le contenu du fichier.
 
Impossible d'utilise la méthode 100% mémoire.
 
Dans l'ASP :

Code :
  1. If Request.Form("uplmethod" ) = "zip" Then
  2. Dim zipper
  3. Set zipper = Server.CreateObject("sInterClassART.clsdExportFile" )
  4. Response.BinaryWrite zipper.MemoryStringToGZ(content, Request.Form("dataType" ) & "_" & Year(Now) & Right("0" & Month(Now), 2) & Right("0" & Day(Now), 2) & "." & Request.Form("fileformat" ), Server.MapPath(Application("REP_ETATS_TMP" )))
  5. Else
  6.  Response.Write content
  7. End if


 
Module VB :

Code :
  1. Function BinFileReadAndKill(ByVal inFileSpec As String) As Variant
  2.      Dim mHandle
  3.      Dim lngFileLen As Long
  4.      Dim arrData() As Byte
  5.      mHandle = FreeFile
  6.      Open inFileSpec For Binary Access Read As #mHandle
  7.      lngFileLen = FileLen(inFileSpec)
  8.      ReDim arrData(lngFileLen)
  9.      Get #mHandle, , arrData
  10.      Close #mHandle
  11.      Kill inFileSpec
  12.      BinFileReadAndKill = CVar(arrData)
  13. End Function
  14. Function MemoryStringToGZ(ByVal memoryBlock As String, ByVal contentFileName As String, ByVal tmpPath As String) As Variant
  15.     Dim dynaZip As New gtactx
  16.     Dim fso As New FileSystemObject
  17.     Dim tmpFile As String
  18.    
  19.     Dim bytes() As Byte
  20.     Dim curs As Long
  21.     ReDim bytes(Len(memoryBlock))
  22.     For curs = 0 To Len(memoryBlock) - 1
  23.         bytes(curs) = CByte(Asc(Mid(memoryBlock, curs + 1, 1)))
  24.     Next
  25.    
  26.     Dim reader As New clsdExportFile
  27.     tmpFile = tmpPath & "\" & fso.GetTempName()
  28.    
  29.     dynaZip.bAddComment = True
  30.     dynaZip.GZIPComment = "Automatically generated on " & Now()
  31.     dynaZip.bAllQuiet = True
  32.     dynaZip.bBackgroundProcessing = False
  33.     dynaZip.bDiagnostic = False
  34.     dynaZip.bDosify = False
  35.     dynaZip.bEncryptFlag = False
  36.     dynaZip.bExclDate = False
  37.     dynaZip.bGrowExisting = False
  38.     dynaZip.bInclDate = False
  39.     dynaZip.bIncludeSysHidden = False
  40.     dynaZip.bLFtoCRLF = False
  41.     dynaZip.bMajorStatus = False
  42.     dynaZip.bMessageCallback = False
  43.     dynaZip.bMinorStatus = False
  44.     dynaZip.bNoDirectoryNames = True
  45.     dynaZip.bRecurseFlag = False
  46.     dynaZip.bRenameCallback = False
  47.     dynaZip.bUseEncodedBinary = False
  48.     dynaZip.CompFactor = 9
  49.     dynaZip.memoryBlock = CVar(bytes)
  50.     dynaZip.MemoryBlockSize = Len(memoryBlock)
  51.     dynaZip.GTFile = tmpFile
  52.     dynaZip.ItemList = contentFileName
  53.     dynaZip.ActionGT = 4 ' GT_GZIP_MEMTOFILE : Compress memory to file gzip format
  54.     MemoryStringToGZ = BinFileReadAndKill(tmpFile)
  55. End Function


 
Ca marche, j'y touche plus :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed