• 締切済み

バイナリデータの表示

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

  • retsu
  • お礼率50% (2/4)

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

バイナリー転送するのであれば、Response.ContentTypeを設定しないと駄目です。 その場合、ブラウザに表示されずダウンロード画面が出ます。 ちなみに、basp21ではなくADODB.Streamを使う方法があります。 http://support.microsoft.com/default.aspx?scid=kb;ja;276488

関連するQ&A

  • BASP21によるbase64のデコードについて

    base64でエンコードされた画像ファイルを表示したいと思っています。 basp21でデコードして、BinaryWriteで書き出したんですがうまく表示できません。 CAPICOMを使った場合は正しく表示されます。 basp21でデコードする際になにか処理をはさむ必要があるのでしょうか? 以下作成したサンプルソースです。 ---ソース------------------------------------------ <%@ Language="VBScript" %> <% Set Stream = Server.CreateObject("ADODB.Stream") Set CAPIUtil = Server.CreateObject( "CAPICOM.Utilities" ) Set objBasp = Server.CreateObject("basp21") strEncoded = "/9j/kL・・base64でエンコードされたJpegファイル" strDecoded = CAPIUtil.Base64Decode( strEncoded ) strDecoded2 = objBasp.Base64(strEncoded, 1) Response.ContentType = "image/jpeg" ' Response.BinaryWrite strDecoded ' Response.BinaryWrite strDecoded2 %> ---------------------------------------------ここまで----- 以上よろしくお願いいたします。

  • 【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 -------------------------------------------------------

  • Access2003からシンプルにファイルを添付してメール送信したいと

    Access2003からシンプルにファイルを添付してメール送信したいと考えています。 こちら(http://www.site-cooler.com/kwl/asp/19.htm)を参考に、BASP21というコンポーネントを利用してACCESS上のフォームにボタンを用意してコードビルダで下記のように記述してみましたが、「コンパイルエラー:構文エラー」と表示されました。 どのように改善すれば良いのでしょうか。 ACCESS初心者の為、すみませんがご教示お願いします。 --------------------------------------------------------------------------- Private Sub コマンド0_Click() Set bobj = Server.CreateObject("basp21") bobj.SendMail() <%@ LANGUAGE = VBSCRIPT %> <% Dim strServer 'SMTPサーバ Dim strTo '宛先 Dim strFrom '送信元 Dim strSub 'メール標題 Dim strBody 'メール本文 Dim strFile '添付ファイル Dim result '戻り値 strServer = "smtp.xxxx.co.jp" strTo = "xxxx@xxxx.co.jp" strFrom = "xxxx@xxxx.co.jp" strSub = "件名" strBody = "本文です。" & vbCrLf & "本文終了" strFile = "c:\text.txt" Set bobj = Server.CreateObject("basp21") result = bobj.SendMail(strServer, strTo, strFrom, strSub, strBody, strFile) If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If Response.Write ("メール送信完了") %> If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If End Sub ---------------------------------------------------------------------------

  • BinaryWrite サーバ間ファイル書き込み

    こんにちは。よろしくお願いします。 ASPでBASP21のソケットオブジェクトを利用して、がちょがちょやってる最中です。 1.クライアントからサーバAのWebページへアクセス。 ↓ 2.アクセスすると、サーバAの別ページをソケットで繋げて、データを受信。 ↓ 3.受信したデータをテキストファイルの中に書き込み、ファイル保存。 そんな感じの機能を作りこんでいる最中です。 大体思い通りになってはいるのですが。。。 3番で少し詰まっています。 「3.ファイル保存」を、サーバBに対して行ないたいのですが、すんなり出来ませんでしたっけ? FileSystemObjectのCreateTextFileは、サーバまたぐと無理みたいだし、 BASP21のBinaryWriteで実現できたような記憶が無きにしも非ずなのですが、「あれ?出来ないぞ?」 となっておりまして。。。 ================================================== Set bobj = Server.CreateObject("basp21") Set bsocket = Server.CreateObject("basp21.socket") rc1 = bsocket.Connect("hogehoge.co.jp", 80, 180) host = "Host: hogehoge.co.jp" & vbCrLf rc1 = bsocket.write ("GET /system/hogehoge.asp?para=abc HTTP/1.0" & vbCrLf & host & vbCrLf) ヘッダ読み飛ばし(略 rc1 = bsocket.read(datax,1) rc1 = bobj.BinaryWrite(datax, "●●●●") ================================================== ●●●●箇所を サーバAのフルパスならもちろん問題なし。 「D:\hogehoge.txt」 サーバAのネットワークパスならアウト。 「\\hogehoge_a\drv_d\hogehoge.txt」 サーバBのネットワークパスもアウト。 「\\hogehoge_b\drv_d\hogehoge.txt」 サーバBのネットワークドライブを切ってもアウト。 「V:\hogehoge.txt」 。。。やっぱ、サーバ間またいでファイル保存ってこのままじゃ出来ませんでしたっけ? あんまり粘る時間も無いので、「4.仕方ないから、サーバAからサーバBにファイルをコピーする」 処理でも作ろうかどうしようか悩んでいるところです。 すみませんが、アドバイスのほどよろしくお願いしますm(_ _)m

  • 大きな画像の表示でエラー

    IIS5で動画を読み込んで表示していたASPを IIS6に移して動作させたところ、4Mbytesを超えたファイルを 読み込ませると以下のようなエラーが出てしまいます。 IIS6で出力サイズの制限を受けているようなのですが 何処でこの制限が掛かっているのかが、わかりません。 どなたかお教えください。 **エラー*************** Response オブジェクト, ASP 0251 (0x80004005) Execution of the ASP page caused the Response Buffer to exceed its configured limit. /test_mpg.mpeg, line 7 ***************** ***ソース******** <% @Language=JScript%> <% Response.Expires = 0 %> <% Response.ContentType = "video/mpeg"; var a = Babaq.BinaryRead("C:\\mpeg\\sample.mpg"); Response.BinaryWrite(a); %> ******************

  • basp21を利用した送信

    basp21を利用した送信 エクセル2002使用です。 VBAを利用してbasp21.dll(Proではない)を使ってメール送信ををしたいのですが、 フリーソフト版のbasp21.dllで、(POP before SMTP)は利用できるのでしょうか? sub test() dim bobj as Object dim kekka as string, strkk as string, strjikan as string dim mailServer as string, mailFrom as string, mailTo as string, MailSubject as string, mailBody as string, mailFiles as string Set bobj = CreateObject("basp21") mailServer = "mail.***.com"    ’←(POP before SMTP)にしたいのです。 mailFrom = "***@***.com" mailTo = "***@***.com" MailSubject = "タイトル" mailBody = "本文" mailFiles = "d:\autocsv\wddc\" & strkk & strjikan & ".doc" kekka = bobj.SendMail(mailServer, mailTo, mailFrom, MailSubject, mailBody, mailFiles) end sub よろしくお願いします。

  • Basp21に詳しい方!!

    まったくの初心者です。 送信するメールにファイル添付されるようにしたいのですが、 どうしてもエラーが出てしまいます。 どこが間違えていますか? ----------------------------------------------------------------------------------------------------------- 'Basp21でメールを送信します。 Set Basp = Server.CreateObject("basp21") tb = Request.TotalBytes br = Request.BinaryRead(tb) fn = Basp.FormFileName(br,"includedFile") fpath = Mid(fn,InstrRev(fn,"\")+1) leng = Basp.FormSaveAs(br,"includedFile",fpath) End If rc = Basp.SendMail(host, mailTo, mailFrom, subject, body, fpath) If rc = "" Then Response.Write "送信完了" Else Response.Write "送信失敗:" & rc End If set basp = Nothing

  • BASP21を使ってEXCELからメールの送信

    BASP21を使ってEXCELからメールの送信をしたいのですが、できません。 自分なりに調べた結果、下記のコードになったのですが、どこかおかしいのでしょうか? エラー表示は次になります。 530 5.7.1 client was not authenticated from メールアドレス よろしくお願いいたします。 Sub ボタン2_Click() ''[送信]ボタン Dim bobj, msg As String, i As Long Dim Server As String, Mailto As String, MailFrom As String Dim Subject As String, Attach As String, Body As String On Error Resume Next Set bobj = CreateObject("basp21") ''BASP21オブジェクト ''BASP21がインストールされているかどうかを判定する If Err = 429 Then MsgBox "BASP21がインストールされていません。", vbCritical Exit Sub End If ''必須データのチェック Server = "mail.○○○.com:587:60" ''SMTPサーバー Mailto = "○○○@hotmail.co.jp" ''宛先 MailFrom = "△△△@×××.co.jp" ''差出し人 Subject = "更新連絡" ''タイトル Body = "システムが更新しました" ''本文 msg = bobj.SendMail(Server, Mailto, MailFrom, Subject, Body, Attach) Set bobj = Nothing If msg <> "" Then MsgBox msg, vbExclamation Else MsgBox "メールを送信しました。", vbInformation End If End Sub

  • ASPでバイナリーファイルをダウンロードさせるには?

    ASPでファイルをダウンロードするスクリプトで、以下の様な例がMicrosoftのページに 掲載されているのですが、 <% 'Set the content type to the specific type that you are sending. Response.ContentType = "application/x-msexcel" Const adTypeBinary = 1 Dim strFilePath strFilePath = "C:\ExcelFiles\Excel1.xls" 'This is the path to the file on disk. Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream.Close Set objStream = Nothing %> 上記の中の"strFilePath "の部分を、サーバーローカルのハードディスク以外に 出来る方法というのはあるのでしょうか? サーバーのオブジェクトとして、 Set objStream = Server.CreateObject("ADODB.Stream") をセットしているので、この方法では無理だとは思うのですが、同じようにバイナリー ファイル(特に有名なアプリケーションに関連付けされてしまっている拡張子を持つ もの)をダウンロードダイアログを表示して、スクリプトのあるサーバー以外のサーバー 上にあるファイルを明示的にダウンロードできるようにしたいのですが。。。

  • Response.BinaryReadエラー(Windows 2003 RC2上)

    現在,Windows2000 ServerからWindows 2003 RC2へのサーバーを移行を行っています. ASP(ACtive Server Page)の移行作業の中で,つまずいています. BASP21のモジュールを利用して,ファイルをアップロードしている箇所があり,アップロードする前段階のRequest.BinaryReadを行うとエラーが発生します. [該当ソース] <% lngTB=Request.TotalBytes bin=Request.BinaryRead(lngTB) '←エラー発生 %> [エラーメッセージ] '検索中のページには問題があるため表示できません。 該当ファイルを保存しているフォルダの他のASPファイルは動作していますので,フォルダのアクセス権限ではない印象です. サーバー(OSおよびIIS)の設定も含めて,何かお気づきの点がありましたら宜しくご指導願います.

専門家に質問してみよう