全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1449
推到 Plurk!
推到 Facebook!

怎麼在在程式中將檔案壓成ZIP檔,再取得base64的字串?

尚未結案
cindyliu
一般會員


發表:16
回覆:18
積分:6
註冊:2008-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-27 12:59:08 IP:59.120.xxx.xxx 訂閱
我在網路上找到一篇把檔案壓縮成ZIP檔的函數...

http://www.xuedelphi.cn/wenzhang/yytg/2009/01/200901052759.htm


[code delphi]
implementation

{$R *.dfm}

uses Zlib;

procedure Zip(var fs: TMemoryStream);
var
cs: TCompressionStream;
ms: TMemoryStream;
num: Integer;
begin
if not(Assigned(fs) and (fs.Size>0)) then Exit;
num := fs.Size;
ms := TMemoryStream.Create;
cs := TCompressionStream.Create(clMax, ms);
try
fs.SaveToStream(cs);
cs.Free;
//ms.Position := 0;
fs.Clear;
fs.WriteBuffer(num, sizeof(num));
fs.CopyFrom(ms, 0);
finally
ms.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
ms.LoadFromFile('C:\25K.doc');
Zip(ms);
ms.SaveToFile('C:\25K.ZIP');
end;

[/code]

照著方法做檔案的確是有變小...
可是回到資料夾,檔案DoubleClick
就會出現「這個壓縮檔不是未知的格式就是損壞」的錯誤訊息

請問這是什麼原因?或是有什麼其他方法也能壓縮的...

我程式的目的主要是要把資料夾底下的檔案壓縮成zip檔之後,
再把zip檔BASE64之後的字串夾帶到xml的tag裡..

h@visli
資深會員


發表:101
回覆:416
積分:418
註冊:2004-02-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-27 14:52:28 IP:116.25.xxx.xxx 未訂閱
Zlib压缩算法与我们常用的Zip算法不同,所以用WinZip或WinRAR等软件是无法打开的。
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
系統時間:2017-10-20 5:43:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!