以下のやり方を実行するにはどうすればよいですか。
やりたいこと。
1.ASP(WEB .NETではない。)(WIN2003)
で画面表示したデーターをCSVに出力
2.出力したCSVファイルをZIPに圧縮
3.圧縮したファイルを自身のPCにダウンロード
で、出力したファイルをZIP形式にしたいのですが
どうすればよいでしょうか。
ASPは、直接DLLの呼び出しができないため、途方
にくれています。
よろしくお願いします。
?
ASPでもOCXなりDLLは呼べますよ??
http://q.hatena.ne.jp/1095066281
ずいぶん昔に似たような質問があったのでその関連のリンクを張っておきますね。
zipだから
application/x-zip-compressedかな。
zip32.dllあたりをよんであげればできるかとおもいます。
dllの登録はコンポーネントマネージャー(?名称がちょっとうるおぼえ。)をつかうのがいいですよ。ちょっと調べたらregsvr32で登録とか書いているページが多かったので……。
DLL掴んだままにされるとregsvrじゃDLLの置き換えできないんで。
独自DLLを組むかBASP経由でコマンド飛ばすかで解決できませんか?
http://www.hi-ho.ne.jp/babaq/basp21.html#0029
権限問題は実装環境によって異なりますので完全に裏は取れませんが。
独自DLLもBASPもサーバー登録不可(なくらいセキュリティ他がうるさいサーバー)だと難しいですね。
補足しますね。
ちなみに参考URLの二番目の回答が昔のわたしの回答です。
DLLの参照のしかたは、
Server.CreateObjectを使用します。
set cnn = Server.CreateObject("ADODB.CONNECTION") cnn.ConnectionString = sConnString cnn.Open
たとえばこんな感じに使用します。
http://thesource.ofallevil.com/japan/msdn/columns/server/ser...
MSDNあたりで、Server.CreateObjectを参考にされるとよいかもしれません。
このサンプルで言うところの"ADODB.CONNECTION"がZIP32のクラスパスになります。ちょっとZIP32のクラスパスをここに指定してやれば、サーバーサイドでクリエイトオブジェクト後、普通にDLLメソッドなどがよべるようになります。
もちろんZIP32.dllへのパスが通っていることが前提になりますので、コンポーネントマネージャーなどで、ZIP32.dllをiisから参照できるようにしてやる必要があります。
<% Set oZip = Server.CreateObject("zipit.utils") sTestfile = Array("c:\winzip.log", "c:\winnt\winnt.bmp") zip =oZip.doZip(sTestfile, "\myZipFile.zip") 'if you want to write this zip output here first, make sure you set write permssion for IUSR_ServerName account here Set oZip = nothing Response.Redirect("C:\myZipFile.zip") 'to download %>
http://www.asptoday.com/ContentForums.aspx?Subject=0&Content...
とか
http://www.zbitinc.com/samples.asp
とかあたりを参考にされるといいかもしれません。ちょっとzip32の構成がわからないので、なんともいえませんが。
http://www.pcreview.co.uk/forums/thread-1469096.php
もしかしたら、既存のwscriptクラスのなかに、zipmakeあるかもしれませんね。
Function makeZip() Dim WshShell Set WshShell = CreateObject("wscript.shell") WshShell.Run """c:\program files\winzip\wzzip.exe"" - r -p -e0 -ybc c:\inetpub\wwwroot\temp\approvals\test.zip c:\inetpub\wwwroot\temp\approvals\*.*" Set wshShell=Nothing End Function
バッチファイルは、ZIP.EXEからZIP32.DLLに
渡して圧縮すればよいと思いますが、ASPから
ZIP32.DLLってURLを参照してもわからなかった
んですが、.netASPならDLLよべます
がASPからの呼び出しかたがわかりません。
サーバーはWIN2003です。直接
ZIP.EXEをよべません。(セキュリティでWEB
ユーザーにはCMD.EXEの実行権限がありません。)