2011-03-31 95 views
2

我每天下載一個GZ文件,然後我需要解壓並將內容導入到我的數據庫表中。Coldfusion8 - 使用Coldfusion 8解壓縮GZ文件

我從Adobe Coldfusion Exchange發現CFX_Gzip.dll。任何人都知道我把DLL文件放在哪裏? 它可能會在CF8/lib /文件夾中,但我不確定。

我正在使用Coldfusion8。如果還有另一個gzip解壓縮器,我應該使用,如果有更近的那個,我會很高興。這個舊的,從寫它的人的網站現在不在了。沒有與它的文件。

回答

1

可以使用一點Java來處理gzip格式 http://www.cflib.org/udf/gzip

+0

哎呀,忘了cflib。 – Sergii 2011-03-31 19:47:02

+0

@Sergii - 這怎麼可能? ;) – Leigh 2011-03-31 19:56:44

+0

很容易,這裏是晚上11點:) – Sergii 2011-03-31 20:31:33

1

可能不是最完美的解決方案,但似乎對我的簡單測試情況下工作:

<cfscript> 

    inputFile = "/tmp/test.txt.gz"; 
    outputFile = "/tmp/test.txt"; 

    ioInput = CreateObject("java","java.io.FileInputStream"); 
    gzInput = CreateObject("java","java.util.zip.GZIPInputStream"); 
    ioOutput = CreateObject("java","java.io.FileOutputStream"); 

    ioInput.init(inputFile); 
    gzInput.init(ioInput); 
    ioOutput.init(outputFile); 

    line = 0; 
    buffer = RepeatString(" ", 1024).getBytes(); 

    while (line GTE 0) { 
     ioOutput.write(buffer, 0, line); 
     line = gzInput.read(buffer); 
    } 

    gzInput.close(); 
    ioInput.close(); 
    ioOutput.close(); 

</cfscript> 
+0

感謝您的回覆。我最終使用了一個名爲CFX_GZIP的CFX。 – Robbiegod 2011-04-05 19:45:22

6

不需要一個DLL與CF8,使用現有的Java庫。看看CFLib或嘗試下面的代碼:

<cfscript> 
try{ 
    /* Set inoutput */ 
    gzFileName = "myFile.gz"; 
    outputFile = "mygzFiles"; 

    /* Initialize gzip */ 
    var outStream = CreateObject("java","java.io.FileOutputStream"); 
    var inStream = CreateObject("java","java.io.FileInputStream"); 
    var inGzipStream = CreateObject("java","java.util.zip.GZIPInputStream"); 

    outStream.init(outputFile); 
    inStream.init(arguments.gzipFilePath); 

    inGzipStream.init(instance.ioInput); 

    while(l GTE 0){ 
     outStream.write(buffer, 0, l); 
     l = inGzipStream.read(buffer); 
    } 

    /* Close the GZip file */ 
    inGzipStream.close(); 
    inStream.close(); 
    outStream.ioOutput.close(); 

} catch(Any){} 
</cfscript> 
+0

雖然最好不要吞嚥錯誤。出錯時,應關閉流(以確保沒有任何內容處於鎖定狀態)並報告錯誤。 – Leigh 2011-03-31 19:59:49

+0

是的,你是對的。似乎我們都是「同步」來回答這個問題:-) – 2011-04-01 07:46:13

+0

是的。每個人都提出同樣的事情,可能意味着這是正確的答案;) – Leigh 2011-04-01 15:44:25