0

DotNetZipをインストールして、Windows2008サーバーで正常に実行しています。

従来のASPページを使用して、カンマ区切りのファイルをユーザーにバンドルし、zipファイルで送信したいと思います。

次のコードは正常に機能しますが、すべてのパス情報が保存されるため、zipファイル内のファイルは次のようなばかげたディレクトリにあります。C:\Inetpub\wwwroot\appname\_temp\

私は次のコードを使用しています:

Set objZip = CreateObject("Ionic.Zip.ZipFile")
sFileArray = Split(sFileArray, "|")
For iCount = 0 To UBound(sFileArray)
If sFileArray(iCount) <> "" Then
objZip.AddFile sFileArray(iCount)
End If
Next
objZip.Name = sFilePath & "test.zip"
objZip.Save()
objZip.Dispose()
Set objZip = Nothing

このAddFileメソッドでは、2番目のパラメーターを追加する場合に、追加したファイルをzipファイルのどこに配置するかを指定できることがわかります。ドキュメントによると、objZip.AddFile sFileArray(iCount), ""ファイルをzipファイルのルートに配置する必要があります。

ただし、そのパラメーターを追加すると、次のエラーが発生します。

 Wrong number of arguments or invalid property assignment: 'objZip.AddFile' 

誰かが私が間違っていることを知っていますか?

ありがとう。

4

1 に答える 1

1

ドキュメントを誤って解釈していると思います。2番目のパラメータがの場合、null追加されるファイルのディレクトリパスが使用されます。2番目のパラメータが空の文字列""の場合、ファイルはzipのルートレベルに追加されます。Ioniz.zip.dllをざっと見てみると、AddFileメソッドのシングルパラメータオーバーライドは、2番目のパラメータがnullに設定されたダブルパラメータオーバーライドを呼び出すだけであることがわかります。

したがって、追加ファイルは次のようになります。

objZip.AddFile sFileArray(iCount), ""

あなたが求めている結果を得るために。

于 2012-08-10T08:32:03.613 に答える