• 締切済み

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 %> ---------------------------------------------ここまで----- 以上よろしくお願いいたします。

みんなの回答

回答No.1

※確認したわけではないので違ってたらごめんなさい 画像ファイルをデコードとのことですので Base64の引数は7ではないでしょうか? strEncodedの形式も変えなければいけませんが。。。

参考URL:
http://www.hi-ho.ne.jp/babaq/basp21.html#0039
basako
質問者

補足

すみません。言葉足らずでした。 ファイルではなく文字列でデータを受け取っているので。。。 strDecoded形式を変換が必要とのことなので変換しようとしてみましたがイマイチうまくいきませんでした。 一応下記の関数で変換してみたんですが(ちゃんと出来てるかどうかは不明^^;) CAPIUtil.BinaryStringToByteArray(strDecoded) この場合でも画像は表示されませんでした。 テスト環境ではCAPICOMが使えるんですが、本番環境では使えないため (入れてもらうというのも一つの手ではあるんですが)、使わずに動作できるようにしたいと思っています。 見当はずれなこと言っていたらすみません。。。

関連するQ&A

  • base64_decodeに関して

    base64でエンコードされたPHPソースをデコードし、 その内容を表示させるスクリプト(base64.php)を 実行すると、ブラウザには decode.txt の様に 文字化けした内容が表示されます。 元のソースを表示させる方法は無いでしょうか? base64.php、decode.txt は以下よりダウンロードし、 検討して下さい。 ================================================================ http://www.hp-toolbox.com/base64_decode.zip ================================================================ 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 【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 -------------------------------------------------------

  • 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

  • バイナリデータの表示

    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

  • 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") をセットしているので、この方法では無理だとは思うのですが、同じようにバイナリー ファイル(特に有名なアプリケーションに関連付けされてしまっている拡張子を持つ もの)をダウンロードダイアログを表示して、スクリプトのあるサーバー以外のサーバー 上にあるファイルを明示的にダウンロードできるようにしたいのですが。。。

  • BASP21を利用してリネームファイルアップロード

    Set basp = Server.CreateObject("basp21") を利用して、 FilePath = Server.MapPath("../pictures") & "\" & GyoushaBangou & "\" & FilePath leng = basp.FormSaveAs(postData,"UpFile",FilePath) のプログラムを使って、ファイルアップをしてます。 ローカルのデータ画像のアップに際して、同じ画像を上げる事が無いように、ファイル名に日付けなどを付け加え、名前を変えて同じ名前のファイルを上げる事が無いようにしたいのです。 現在の仕組みでは、リネームされない状態でアップロード出来て、アップロードした名前はデータベースに記録されるようになっています。 出来る方法を教えていただけないでしょうか! よろしく、お願いします。

  • ファイルダウンロードの開くで、CSVファイルが開けない

    表記の件についてかなり困っています。 教えてください。 【環境】  Windows2000 SP4 + ASP 【内容】  現在CSVファイルをダウンロードする仕組みをASPで作成しています。 とりあえず、ダウンロードダイアログがでてくるところまではでき、保存ボタンでも正常に保存できるところまではできたのですが、開くボタンをクリックすると、EXCEL(CSVをEXCELに関連付けしているため)が起動された後に、 ”出力ファイル名[1].csv”が見つかりません。という エラーとなり表示されません。 この原因は何なのでしょうか? 宜しくお願いします。 【ロジック】 ダウンロードロジックは以下のようにしています。 Response.ContentType = "application/octet-stream" Response.AddHeader "content-disposition","attachment; filename=光彩.csv" strFilePath = "C:\Inetpub\wwwroot\CoreSt\光彩.csv" Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = adTypeBinary objStream.LoadFromFile strFilePath Response.BinaryWrite objStream.Read objStream.Close Set objStream = Nothing

  • BASP21でメールが送信できない

    ASPでBASP21を使用してメールを送信しようとしたのですが、SMTPサーバーが停止していたため処理結果が取得できませんでした。 このような場合、何か良い対策はありませんでしょうか。 ご教示の程よろしくお願いいたします。 以下にソースの概要を記載いたします。 Dim objBasp21 Dim strMailSendErr Set objBasp21 = CreateObject("Basp21") strMailSendErr = objBasp21.SendMail(パラメータ) '↑↑↑ メールサーバが停止している場合ここで処理が止まってしまう? If strMailSendErr <> "" Then  'エラーの場合の処理 End If

  • ファイルのストーリーム配布時のファイルサイズ

    IIS6.0 IE6or7 ASP(vbScript) こんにちは。よろしくお願いします. エクセルやワードファイルを直接URLで叩くと ブラウザの中で開いてしまいます. それを避けるために下記のようにしてファイルをストリームとして渡すようにし、問題を回避しようとしました. しかし、ファイルサイズが小さい場合は問題なくDLできるのですが、 1Mを越えたあたりから一瞬でエラー画面になりDLできず、困っています. IISの設定なのか、よくわかりません。 下記以外の方法でも構いませんので、解決方法等ありましたら 御教示願います. Response.AddHeader "Content-Disposition" , " attachment; ilename=" & FileName Response.ContentType = "application/octet-stream;name=" & FileName Set obj = CreateObject("ADODB.Stream") obj.Open obj.Type = 1 obj.LoadFromFile("フォルダパス" & "\" & FileName) Response.BinaryWrite obj.Read() obj.Close

  • basp21でping

    2つのWindows2003ServerでASP(VBScript)での開発を行なっております。 コマンドプロンプトから行うような処理が必要になりBASP21を入れました。 しかし、1つのサーバーは成功しもう一つは失敗してしまいます。 行いたい処理は以下のとおりです。 Set objBasp = Server.CreateObject("basp21") ver = objBasp.Version() result = objBasp.Execute("ping -n 1 -w 50 192.168.0.1", 1, stdout) 【結果は以下のとおりです】 ver = BASP21.DLL = Sep 11 2001 BSMTP.DLL = Sep 11 2001 result = -1 stdout = 空 【期待する結果は以下のとおりです】 ver = BASP21.DLL = Sep 11 2001 BSMTP.DLL = Sep 11 2001 result = 0 stdout = Pinging 192.168.0.1 with 32 bytes of data: Reply from 192.168.0.1: bytes=32 time<1ms TTL=128 Ping statistics for 192.168.0.1: Packets: Sent = 1, Received = 1, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms 期待する結果は別のサーバー(同じ環境のはず)ではうまくいきます。 両サーバーからコマンドプロンプトで同様のpingを行うと全く同じ結果(期待する結果)が帰ってきます。 sysytem32/cmd.exe にインターネットゲストアカウントは追加しております。 考えられる原因を教えて頂けますか。 すみませんが、よろしくお願い致します。

専門家に質問してみよう