BASP21+ASPでMDEファイルがダウンロードできなくなった

このQ&Aのポイント
  • IIS+VBSで、サーバーに上げたファイルを各自の端末でダウンロードできるページを作成しています。
  • AccessのMDEファイルが急にダウンロードできなくなってしまい、表示されるファイル名が書き換えられる問題が発生しました。
  • 解決方法をご教授いただける方はいらっしゃいますか?
回答を見る
  • ベストアンサー

【BASP21+ASP】MDEファイルがDL出来なくなった

いつもお世話になっております。 IIS+VBSで、サーバーに上げたファイルを各自の端末でダウンロード出来る ページを作成しています。 例えば、クライアントで <a href="download.asp?FILE=見積書.xls">見積書</a> をクリックすると、download.aspに変数FILE(見積書.xls)が 渡され、download.asp側でtoolsフォルダ配下の見積書.xlsを ダウンロードする準備を行う、といった具合です。 これまで順調に動いていたのですが、ここ2,3日で急に AccessのMDEファイルがダウンロード出来なくなってしまいました。 本来ならダウンロード確認画面に「XXX.mde」と表示されるはずが、 「download.asp?FILE=XXX_mde」と書き換えられたかのように表示され、 保存しようとしてもエラーになります。 開く を選択するとASPのエラーが表示されるのですが、 BASP21のobjBasp.BinaryReadメソッドのところで「特定できないエラー」が 表示されています。 今までMDEファイルもダウンロード出来ましたし、家で同じ環境を構築しても 上手くいったのですが、会社の環境だけこのような事態になっています。 どなたかこの解決方法をご教授願えませんでしょうか? よろしくお願い致します。 (会社、自宅とも、WinXP+IIS6です) ---------------download.asp のソース-------------- Dim dat Dim objBasp Dim fname Dim bydata fname = Request.QueryString("FILE") Response.ContentType = "application/octet-stream;name=" & fname Response.AddHeader "Content-Disposition","attachment;filename=" & fname Set objBasp = Server.CreateObject("Basp21") bydata = objBasp.BinaryRead(Server.MapPath("tools/" & fname)) Response.AddHeader "Content-Length", ubound(bydata) + 1 Response.BinaryWrite bydata Set objBasp = Nothing -------------------------------------------------------

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

BASP21 ↑これ有償のを利用しないと、業務に使える代物ではないので、使ったことがないのですが、、、 >今までMDEファイルもダウンロード出来ましたし、家で同じ環境を構築しても上手くいったのですが、会社の環境だけこのような事態 これから言えるのは、 「環境の問題であって、プログラミングの問題ではない」 と想像されます。 WinXP+IIS6となっていましたが、 WinXPはIIS5.1ですよね? もしかしたら会社はWin2003とか? それと何もレスポンスを返すための配列であれば、BASP21を利用しないでも、ASP.netの標準機能でできます。 いっその事BASP21をはずして、書き換えてはいかがですか? 有償版を利用しているのであれば、ここの掲示板よりBASP21のサポートを受けるべきですが、そうでない場合は 「特定できないエラー」 なんて状態になったときに、対応の取りようがありません。

die0930
質問者

お礼

1050YENさま ご回答いただき有難うございます。 IIS5.1でしたね。すみません。2003Srvとごっちゃになってました。 .NETって実装するのもありですね。単にダウンロードのリンク集なので 凝ったつくりも必要ないですし。 諸事情により、今回、MDEファイルをFTPサーバ経由でFFFTPでもって ダウンロードしてIIS配下に置いたのですが、それ以降おかしくなった ようです。 今度はメールで送ったものを配置して、それでもラチがあかなければ ASP.NETでの実装を考えます。

die0930
質問者

補足

ASP.NETで作り直してみました。 MDEファイルがダウンロード出来たり、出来なかったり、が続いて困っていました。 結局、フォルダ、あるいはファイルにおける権限の設定が邪魔していたようです。 というか言い訳なんですが、XPの設定が、フォルダ(ファイル)のセキュリティタブを表示しない 設定になっており、そこまでたどり着けなかった、というのが正直なところです。 そこらへんを最初から設定しておけば、レガシーASPでも問題なかったかもしれません。 (もう、戻す気力はありませんが・・・・・)

関連するQ&A

  • ASPからファイルダウンロード

    Win2k+IISでASPプログラムを組んでいます。 A.aspのページでボタンを押すとA.aspないのDownLoad関数実行してファイルをダウンロードするプログラムです。 一回目はうまくダウンロードできますが,それが終わった後A.asp内のボタンを押してもダウンロードが出来ません。 これはなぜでしょうか。 (1)怪しいと思うところはA.aspページで全て処理しているからかな~と思います。 A.asp function download() Response.AddHeader "Content- Disposition","attachment;filename=aa.csv" Response.ContentType = "application/octet-stream" Response.Write( "AAAAaaa" & "," ) Response.Write( "BBBaaa" & "," ) Response.End() End function

  • BASPでのファイルアップロード

    お世話になります。 win2000でBASPを使って、ファイルのアップロードを行うプログラムを製作しています。 一つ目のASPファイルでアップロードするファイルを選択し、 これをSubmitして二つ目のASPファイルでファイルアップロード作業をするものです。 ネスケ6.2ではformsaveasが正常に動作したのですが、IEやネスケ4.7などではformsaveasが上手く働いてくれません(後述)。 できることなら保有するブラウザ全てで正常に動かしたいです。 しかし色々試したり調べたりしましたがどうしても自分だけの力では無理でした。 下記で二つ目のASPファイルで行う必要最低限のアップロード作業部分を載せました。 他にも載せようとしたら文字数オーバーだったので、ご容赦ください。 この保存作業部分で明らかに足りない何かがあったりしたら、そこをご指摘いただければ助かります。 Datasize = Request.TotalBytes B_Data = Request.BinaryRead(Datasize) Set objB = Server.CreateObject("basp21") strPath= "C:\test\" strname = objB.formfilename(b_data,"f_file") errno = objB.formsaveas(b_data,"f_file",strpath & strname) (この時点でerrnoに-3の値が入ってしまう=ファイルアップロード失敗) 読みづらい、分かりにくい質問で申し訳ないです。 分かる範囲でけっこうですので、ご協力よろしくお願いします。

  • ASPでExcelファイルのダウンロード

    はじめて質問します。 よろしくお願いいたします。 さて、現在ASPでDBから取得したデータをExcelでダウンロードする機能を実装しています。 ダウンロード自体は問題なくできています。 #ソース Response.ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition","attachment; filename=sample.xls" Response.Write "項目1" & vbTab & "項目2" Response.End #ここまで この状態ですと、「sample」というSheetのA列とB列にそれぞれ、項目1と項目2が入っているExcelファイルがダウンロードできます。 ここからが質問で、今回シートを4枚設けたいと考えています。現状では「ファイル名」のSheetが一枚できるだけなので、複数のSheetにそれぞれデータを書き込む方法をご存知の方はいらっしゃらないでしょうか? なお、Excelのライブラリを使用しない方法がベストと考えています。 以上、長々となりましたが、よろしくご教示ください。

  • EXCELファイルの複数ダウンロードについて

    お世話になっております。 【環境】 ASP.NET(VB) IIS 【質問】 ボタン押下時に2つの異なる帳票(A帳票.xls、B帳票.xls)を作成し、別々にダウンロード処理をさせたいのですが、上記2帳票を別々にダウンロードさせるための実装方法がわかりません。 1つの帳票でしたら、下記の実装方法でダウンロードをすることが確認できました。 Response.Clear() Response.ContentType = "application/vnd.ms-excel" Response.Charset = "" Response.AddHeader("content-disposition", "attachment; filename=A帳票.xls") Response.WriteFile("D:\temp/A帳票.xls") どなたかご存知の方がいらっしゃれば、ご教授ください。 よろしくお願いいたします。

  • クライアントのファイルダウンロード後にサーバー側のファイルを削除したい

    お世話になっております。 ASP.NET(VB)を用いてExcelのファイルを操作保存し、保存してあるファイルをクライアントにダウンロードさせた後にExcelのファイルを削除させようとしています。 ですが、ファイルダウンロード実行する前にファイルが削除されています。 感じとしては、IEにダウンロードするように命令するのですが、そのレスポンスが遅くて削除になってしまっている感じがします。 できればクライアントのダウンロード完了をきっかけに削除するようなコードにしたいです。 どなたかご教授願えませんでしょうか。 以下 コード オブジェクトの宣言、処理 (省略) '*ファイル保存ブロック* 開始 '保存ファイル名 xlFilePath = ("C:\0.xls") '保存時の問合せのダイアログを非表示に設定 xlApp.DisplayAlerts = False xlSheet.SaveAs(xlFilePath) xlApp.DisplayAlerts = True Excel終了、オブジェクト解放 (省略) '*excelファイルダウンロードブロック* 開始 Response.Clear() Response.ContentType = "Application / vnd.ms - Excel" Response.AddHeader("Content-Disposition", "attachment;filename=" & "0.xls") Response.WriteFile("c:\0.xls") My.Computer.FileSystem.DeleteFile("c:\0.xls") 処理終了

  • バイナリデータの表示

    ASP初心者です。 下記のソースの表示結果を[表示]→[ソース]で[ファイル保存] を使い"after_test.bin"として保存しました。 バイナリエディターで元の"test.bin"と結果の"after_test.bin"を見比べると 1.'20'が'00'に変わってしまう 2.'0D'→'0D0A'になり1バイトずれる(BinaryWrite?) この問題を回避するには、どうしたら良いのでしょうか?宜しくご指導願います。 '-------------------------------------------- Dim bobj Dim barray Set bobj = Server.CreateObject("basp21") barray = bobj.BinaryRead(Server.MapPath(test & ".bin") Response.BinaryWrite barray Set bobj = Nothing Call Response.End

  • DBからPDFを取得して別画面で表示したい

    あるページにリンクが貼り付けてあります。 このリンクをクリックすると、 DB(SQL Server)からPDFファイルを取得し 別画面で表示するようにしたいと思っています。 ソースは下記のように書きました。 画面側(XXX.asp) <a href="../common/AAAAA.asp" target="_blank"><img src="images/banner.jpg" border="0" /></a> 呼び出され側(AAAAA.asp) Dim st Dim imgdata Dim rs Dim strSQL Dim column strSQL = "SELECT ファイル " strSQL = strSQL & "FROM 画像 " strSQL = strSQL & "WHERE ファイル名 = 'ファイル名' " 'レコードセット Set rs = querySql( conn, strSQL )     imgdata = rs.fields("ファイル").value Response.ContentType = "application/pdf" Call Response.AddHeader("Content-Transfer-Encoding", "binary") Call Response.AddHeader("Cache-Control", "no-cache") Call Response.AddHeader("Pragma", "no-cache") Call Response.BinaryWrite(imgdata) このようにすると画面には表示されるのですが IE7で表示したときのタブの部分は どうやったら指定できるのでしょうか? 「PDFファイル」と表示させたいです。 よろしくお願いします。

  • VBクライアントからのサーバーファイルダウンロード

    ファイルをダウンロードするシステム構築で困っております。 サーバーに保存しているPDFファイルをクライアントからダウンロード し、Acrobatで開きたいのですが、ログオンやアプリケーション上での 権限認証のロジックを経由した後にダウンロードさせたいため、http やftpで公開することができません。 また、VB 6.0から開く必要があります。 現在は、 ・サーバー(ASP)側でダウンロードのページを用意する。(後述) ・クライアント(VB6)で用意したページを開く。 ということでファイルのダウンロードとAcrobatの動作はできていますが、 ・ブラウザの画面を閉じることができない。 ・サイトのURLが残る。 ということで問題があります。 サイトのURLを表示せずにダウンロードを行い、ダウンロード後は画面を 閉じるか、ウインドウを表示せずに同一の機能を満たす方法はないでしょ うか? ■実行環境 サーバー Win 2003 SP1 + ASP クライアント Win XP SP2 + VB 6.0 + Internet Explore 6.0 ■サーバーのスクリプト(http://server/download.asp) <% '' ログオン名の取得やログオン名に応じたアクセス制御 '' はこの部分に追加 Dim objStream Dim strFilePath Const adTypeBinary = 1 Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open strFilePath = "d:\folder\pdffile.pdf" Response.AddHeader "Content-Disposition", _ "attachment; filename=pdffile.pdf" objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream = null %> ■VB6での起動 ret = ShellExecute(hwnd, "Open", "http://server/download.asp", _ "", "", vbHide) よいアドバイスございましたらよろしくお願い致します。

  • ASP:動的に作成したPDFをアシュクしてダウンロード後の展開

    ASP(VB)にて動的に作成したPDF(stream)をZIPへ格納後、ダウンロードのプログラムを組んだのですが、ZIPの中を展開するとPDFが 「ファイルの種類がサポートされていないか、または破損している可能性があります。例えば電子文書として送信され、正しくデコードされなかったことなどが考えられます。」 と表示されて開けません。 バイト数・圧縮率は正しく表示されているのですが何かソースとしてエンコード/デコード方法が足りてないのでしょうか? ご教授お願いします。 以下ソースです。( Ionic.Zip.dll使用) Dim teststream As Stream Dim streamRE As StreamReader = New StreamReader("C:\test2.txt") teststream = streamRE.BaseStream Response.Clear() Response.ContentType = "application/zip" Response.AddHeader("content-disposition", "filename=data.zip") Dim zip As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile(Encoding.GetEncoding("shift_jis")) Using (zip) zip.AddEntry("データ1.pdf", "", teststream) 'ダウンロード出力 zip.Save(Response.OutputStream) End Using

  • エクセルのシートをブラウザに表示させたい

    現在、以下のものを作っています。 1:ブラウザの画面に「EXCEL」というボタンを置く。 2:データをブラウザに表示する。 3:EXCELというボタンを押す 4:ブラウザに表示したデータがエクセルシート形式でそのままブラウザに表示される こういうのを作っており、今は4の過程で以下のプログラムを入れています。 Response.AddHeader ("content-disposition", "inline; filename=" + fname + ".xls"); しかしこれですと、「ファイルのダウンロード」ボックスが出てきます。 これは、ユーザーが自分でパス指定してダウンロードさせるという方法としては良いのですが、 私がやりたいのはそれではなく、ブラウザにエクセルを表示させたいということです。 誰か知っている方がおられましたらご教授お願いします。