Ich habe eine Datenbank, in der wir mit DynaZip Max Secure komprimierten PDF-Dateien gespeichert ist, mit dem folgenden Code:Gibt es eine Möglichkeit, eine DynaZip Max-Datei mit einer anderen Bibliothek zu dekomprimieren? FE DotNetZip
MemoryStream msIN = new System.IO.MemoryStream(); //Input MemoryStream
MemoryStream msZip = new System.IO.MemoryStream(); //Compressed MemoryStream
BinaryReader objBinaryReader;
BinaryWriter objBinaryWriter;
public MemoryStream CompressStream(byte[] vbuf)
{
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(msIN);
bw.Write(vbuf);
CDZipSNET dz1 = new CDZipSNET();
dz1.ZipMemToMemCallback += new CDZipSNET.OnZipMemToMemCallback(this.ZipMemToMemCallback_event);
dz1.ActionDZ = CDZipSNET.DZACTION.ZIP_MEMTOMEM;
return msZip;
}
Und dies ist der ZipMemToMemCallback_event Code:
public void ZipMemToMemCallback_event(CDZipSNET.MEMTOMEMACTION lAction,ref byte[] lpMemBuf,ref uint pdwSize,uint dwTotalReadL,uint dwTotalReadH,uint dwTotalWrittenL,uint dwTotalWrittenH,ref CDZipSNET.MEMTOMEMRESPONSE plRet)
{
int bytesToRead;
switch(lAction)
{
case CDZipSNET.MEMTOMEMACTION.MEM_READ_DATA:
if((dwTotalReadL == 0) && (dwTotalReadH == 0))
{
msIN.Seek(0, System.IO.SeekOrigin.Begin);
objBinaryReader = new System.IO.BinaryReader(msIN);
}
try
{
bytesToRead = (int)(objBinaryReader.BaseStream.Length - dwTotalReadL);
if(bytesToRead > pdwSize)
{
bytesToRead = (int)pdwSize;
plRet = CDZipSNET.MEMTOMEMRESPONSE.MEM_CONTINUE;
}
else
{
plRet = CDZipSNET.MEMTOMEMRESPONSE.MEM_DONE;
}
pdwSize = (uint)bytesToRead;
if(bytesToRead > 0)
{
objBinaryReader.Read(lpMemBuf, 0, bytesToRead);
}
}
catch
{
plRet = CDZipSNET.MEMTOMEMRESPONSE.MEM_ERROR;
}
break;
case CDZipSNET.MEMTOMEMACTION.MEM_WRITE_DATA:
if((dwTotalWrittenL == 0) && (dwTotalWrittenH == 0))
{
objBinaryWriter = new System.IO.BinaryWriter(msZip);
}
try
{
objBinaryWriter.Write(lpMemBuf, 0, (int)pdwSize);
plRet = CDZipSNET.MEMTOMEMRESPONSE.MEM_CONTINUE;
}
catch (System.Exception)
{
plRet = CDZipSNET.MEMTOMEMRESPONSE.MEM_ERROR;
}
break;
default: plRet = CDZipSNET.MEMTOMEMRESPONSE.MEM_ERROR;
break;
}
}
Ich werde alles bieten Um dieses Rätsel zu meistern, habe ich die normale Zip-Dekomprimierung, Zlib, Gzip vergeblich versucht. Ich werde jede Hilfe schätzen. Danke.
Edit: Das Problem ist, dass DinaZip eine propietary, auslaufend Bibliothek ist, ohne Hilfe oder Problem von der Firma, die sie veröffentlichte, ich bin commisioned eine Reihe von Dateien zu dekomprimieren, die diese Bibliothek vorher komprimiert wurden unter Verwendung von (Mit dem Code avobe) und ich habe nicht mehr die Bibliothek für die Dekomprimierung zur Verfügung, ich frage mich, ob irgendjemand eine Möglichkeit kennt, diese Dateien zu dekomprimieren, vielleicht mit einer anderen Bibliothek oder Methode.
In welcher Zeile tritt der Fehler auf und was ist die Fehlermeldung? –
@ JeremyThompson Der Code Avobe wurde zum Komprimieren der Dateien mit der DinaZip Max Secure-Bibliothek verwendet. Ich muss sie entpacken, ich habe versucht, die ZlibStream- und ZipFile-Funktionen der DotNetZip-Bibliothek zu verwenden, um sie zu dekomprimieren, aber es gibt einen Fehler, der mir sagt, dass es keine gültige Zip- oder Zlib-Datei ist Datei. –
Juust wollte etwas hervorheben, das Sie bereits kennen, aber andere nicht: Die dynazip-Implementierung der Verschlüsselung ist mit keiner der anderen Hauptbibliotheken kompatibel. Das bedeutet, dass Sie ein mit dynazip verschlüsseltes Archiv dekomprimieren müssen, um dynazip zu verwenden. Kein anderer. Möglichkeit. –