ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

あるページにリンクが貼り付けてあります。
このリンクをクリックすると、
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ファイル」と表示させたいです。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

新規ウィンドウではなく、新しいタブで上記ASPを実行したい場合、


どうすれば良いか?って質問ですか?

もし、そうであれば、できない というのが回答になります。
「新しいタブで開く」のかは、あくまでそのサイトを見ている閲覧者の判断に委ねられているため、ASPやHTMLで制御することはできません。
そのため、IE7の新しいタブを制御してはいけないというのが正論です。

<a href="../common/AAAAA.asp" target="_blank">
のように新規ウィンドウで起動するものは閲覧者の判断なくできるのに・・・という意見もおありでしょうが、基本は、新しいウィンドウを作成しなくても良いようなWebアプリケーションをASPで作成するのが本来のあるべき姿です。
W3CのWCAG(ウェブコンテンツアクセシビリティガイドライン)でも
http://www.zspc.com/documents/wcag10/
「新しいウインドウをターゲットとするようなフレームを使用しないようにしてください。」と記載してある通り、新しいウィンドウを開くことをユーザに周知しない限り、プログラム作成者の意図で新規ウィンドウを立ち上げるべきではないということが言えるかと思います。

新しいウィンドウや新しいタブを立ち上げてPDF表示するプログラムをASPで作ることに否定はしませんが、そもそもの考え方/設計思想が間違っていますので、もう一度、その辺りはご検討いただきたいと思います。
(PDFファイルを生成した後、リダイレクトしてダウンロードさせる方が設計理論としては正しいです)

参考URL:http://www.zspc.com/documents/wcag10/
    • good
    • 0
この回答へのお礼

次回からは「リダイレクトしてダウンロードさせる」で設計したいとおもいます。

お礼日時:2009/05/25 09:41

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qasp.netで帳票の作成。IE上でPDFを開く

asp.netで初めてWebサイトの構築をすることになりました。

既に決まった体裁のPDF(見本)があり、それを実現したいのですが、

何から手をつけたらよいか困っています。

今のところ思いついたのが、

エクセルでテンプレートを作成しておく⇒そこにデータを入力⇒PDFに変換⇒ブラウザに表示、です。

しかし、エクセルをPDFに変換後、ブラウザに表示するには、どうしたらよいのか、全くわかりません。


日程的に短期間で作成しなけばいけなく、、、簡単にとっかかれるものを考えています。

何かご教授いただけると大変助かります。

よろしくお願いします。

Aベストアンサー

基本的なWebの知識はありますか?
pdfファイルとして渡せば主流のブラウザは勝手に表示してくれると思いますが…

短期間で簡単に作成したいというのであればCSSJやActiveReportsなんかを利用してXMLを吐き出して読み込ませるっていう感じでしょうね。
多分現在主流なのは大抵この方法で、XMLとかマークアップ言語を利用してブラックボックスのジェネレーターが勝手にPDFにしてくれてるのだと思います。

ある程度の知識があるのでしたら、iTextSharpっていうのがJavaのPDF作成支援ライブラリを.NET化したものなのでそれでやるのもいいかと思います。

難しくはないですが、ただ非常にめんどくさいのでやる気と根気が必要です。

QASP.Net 別ウィンドウを開く・ジレンマ編

大変お世話になっております。

現在別ウィンドウを開くのに
ClientScript.RegisterStartupScript(Me.GetType, "OpenNewWindow", "<script language=""javascript"">window.open('URLを指定', 'TARGET');</script>")
を使用しております。

ですが上記の場合だとjavascriptの為、ASP.Net で使用できる ~(チルダ)が使用できず、ルート表示ができません。

Response.Redirectで記述すると、ターゲットが指定できず、ウィンドウを上書きする形になってしまいます。

足して2で割れればいいのですが、javascriptで ~(チルダ)のようなルート指定ができる方法、もしくは、Response.Redirectでターゲットが指定できる方法など、もしあるようでしたら、お教えいただけますよう、何卒ご教授くださいませ。

上級者の方は、このジレンマをどのように克服されているのか是非ともお教えくださいませ。

Aベストアンサー

Response.Redirect は、ブラウザに HTTP のステータスコード 302(だったはず)を返すものです。
このとき、遷移先のURLを指定することしかできません。
ブラウザ側もそれ以上のことはできないです。

ASP.NETとはいってもブラウザを使う以上、基本はHTTPおよびHTMLです。
そこでできる以上のことはできません。
自分が実装したコードはHTTPやHTMLだとどうなるのか、という観点から考えると、できること
できないことがはっきりしますし、なぜできないかという部分も理解できるかと思います。

QASPで画面間のパラメタ受け渡し

こんばんは。ASP初心者です。
ASPでWEBページの作成を行っています。画面遷移をResponse.Redirect()で行っているのですが、遷移前のページと遷移後のページでパラメタを受け渡したい場合はSession("hoge") = "hogehoge"のようにセッションに入れる以外、何か方法はないでしょうか。リクエスト間でパラメタ渡せればがいいので、セッションを通じて保持しておく必要がないのです。クエリを使用するとアドレス欄に変数の値が見えてしまうのでできれば使いたくありません。

Aベストアンサー

1. Cookieを使う
2. 画面遷移を postで行い、hidden項目に値をセットする (要JavaScript)

私は面倒なのでセッション変数使ってますが、必要なくなればセッションをクリアすれば良いだけだと思います。

Session.Contents("hoge") = Empty

QIIS7.0 他コンピュータへのフォルダアクセス

現在、2003Server R2 SP2、IIS6.0で稼動していたVB.Net aspのプログラムを、2008Server、IIS7.0に移行しているのですが、今まで問題なく動作していたファイルの取得が、うまくいかなくなりました。

別のファイルサーバ上(2003Server R2 SP2)に置いてあるxmlファイルを読み込むという動作をさせたいのですが、エクスプローラ上では問題なく開きます。また、VB.Net aspからのステップ実行でも正しく取得出来ているのです。
しかし、ビルドしてIISの規定のフォルダに置き、IEから呼び出すと読み込めず、ファイルが存在しない場合の処理に入ってしまいます・・
試しに2008SV側のローカル上にフォルダを置くと、正しく取得します。

・読み込むフォルダのアクセス権限をEveryOne→フルコントロールに
・2008SVでWindowsFireWallの許可対象に"WorldWideWeb(http)"を追加
 →2003SVではF/Wサービスを停止
・IIS7.0の[アプリケーションプール]
 →右クリック[詳細設定]
 →プロセスモデルのID変更
 →"NetworkService"から"LocalSystem"に変更

上記設定では試してはいるのですが、うまくいきません。
OS、IIS共にバージョンアップしてしまったので、どちらが原因なのか、調査のアタリを付ける方法でも結構です。
どなたかお知恵を貸してください。よろしくお願いいたします。

現在、2003Server R2 SP2、IIS6.0で稼動していたVB.Net aspのプログラムを、2008Server、IIS7.0に移行しているのですが、今まで問題なく動作していたファイルの取得が、うまくいかなくなりました。

別のファイルサーバ上(2003Server R2 SP2)に置いてあるxmlファイルを読み込むという動作をさせたいのですが、エクスプローラ上では問題なく開きます。また、VB.Net aspからのステップ実行でも正しく取得出来ているのです。
しかし、ビルドしてIISの規定のフォルダに置き、IEから呼び出すと読み込めず、ファイル...続きを読む

Aベストアンサー

IIS7の場合、UNC パススルー認証 を設定すればいけると思いますが、
http://support.microsoft.com/kb/214806/ja
上記は、UNCパス(ネットワークパス)にあるディレクトリを仮想ディレクトリにする方法なので、ちょっと違うのかもしれません。

また、上記に加え、UNC(外部サーバーにアクセスできるログインID)を別途作成し、web.config や問題のデータが格納されている別サーバー に作成したログインIDにアクセス権限を付与してあげればいけそうな気がします。
http://support.microsoft.com/kb/934515/

ちょっと環境がないので試してないんですが、もし上記でもダメだった場合は、またご連絡ください。

参考URL:http://support.microsoft.com/kb/934515/

QASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!

はじめまして、宜しくお願いします。

ASP.netのC#で開発を行っています。

チェックボックスリストのチェックボックスをチェックした際に、
SelectedIndexChangedイベントが発生しサーバ側で受け取れる
はずだと思っているのですが、全くポストバックされていないようです。

プロパティの「AutoPostBack」はTrueにしています。

ほかに条件はありますでしょうか?
ご存知の方がいらっしゃいましたら、宜しくお願い致します。

Aベストアンサー

もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。

一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。

方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する

例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged">
</asp:CheckBoxList>

方法2:
Page_Init や Page_Load などのイベントで、
CheckBoxList1.SelectedIndexChanged += new EventHandler(イベント処理用メソッド名);
を記述する

例:
protected void Page_Init(object sender, EventArgs e)
{
  CheckBoxList1.SelectedIndexChanged += new  EventHandler(CheckBoxList1_SelectedIndexChanged);
}

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
  // 選択された時の処理を書く
  if (CheckBoxList1.SelectedIndex > -1)
  {
    Label1.Text = CheckBoxList1.SelectedValue;
  }
  else
  {
    Label1.Text = string.Empty; 
  }
}

また、わからなければご連絡ください。

もしかして、先ほど、
http://okwave.jp/qa4974802.html
で質問したやり方で、動的に選択項目を生成しているからイベントが発生しないとか?いや、それはないかなぁ。AutoPostBackもTrueみたいですし。

一応、イベント設定方法のやり方は2種類あるのでどちらかお好きな方でおためしください。

方法1:
CheckBoxList を定義している個所に
「OnSelectedIndexChanged="イベント処理用メソッド名"」
を記述する

例:
<asp:CheckBoxList
ID="CheckBoxList1"
runat="server"
AutoPo...続きを読む

QPDFファイルをIE11で直接開きたい

IE11でPDFファイルのリンクをクリックすると
「開くか、または保存しますか?」[ファイルを開く][保存][キャンセル]
が出るようになってしまいました。
[ファイルを開く]をクリックすると
IE11ではなく[Adobe Reader]で開きます。
PDFファイルのリンクをクリックするとIE11で
直接開くようにしたいので教えてください。

Aベストアンサー

Adobe の解決ページ
http://helpx.adobe.com/jp/acrobat/using/display-pdf-browser-acrobat-xi.html

IEが11の場合、は明記されてませんが。

Qhtmlでのpdf資料のリンク方法

こちらの質問方法が悪かったようです。再度質問させてください。現在建築設計事務所を営んでおり、自社サイトを自分でHTMLを使って構築しているのですが、過去のデザイン物件のページの一部に「詳しい資料はこちら」といったテキスト画像を配置して、そこをクリックするとアクロバットが立ち上がり、作成した図面等が掲載されているPDFが表示されるようにしたいと考えています。その方法を教えてください。HTMLに記載するコード、特にPDFファイルとリンクするためのコード、PDFファイルを置くべき位置、その他注意事項があれば教えてください。よろしくお願いいたします。

Aベストアンサー

>「詳しい資料はこちら」といったテキスト画像
「ペイント」などを使ってこの画像(120px×25pxの大きさとして)
を作り「img01.gif」として「data」という名前のフォルダに格納した。
>作成した図面等が掲載されているPDF
(例えば「sample1.pdf」というファイル名として)これも
「data」というフォルダに格納したとします。
「data」フォルダはこのページのhtmlファイルを
格納しているフォルダと同じフォルダ内にあるとします。

>そこをクリックすると作成した図面等が掲載されている
>PDFが表示されるようにしたい
とのことなので

「img01.gif」という画像にハイパーリンクを設定することに
なりますので

<a href="./data/sample1.pdf"><img src="./data/img01.gif" alt="詳しい資料はこちらから(PDF版)" width="120" height="25"></a>

といった形でいいでしょう。

Qリンク先のpdf をwebブラウザで開きたい

あるグループのWEBページを管理していて、リンク先に指定したpdfファイルをブラウザで表示したいと思っています。ところが、自分のパソコン上ではブラウザ上にpdfファイルが表示できるのですが、WEBサイトに上げると、「ダウンロード」になってしまいます。
ブラウザはIEとChromeを使っています。
状況をもう少し詳しく述べますと、
PC上では   IE Chrome 共にブラウザ上で開く
Web 上では  IE : ・ 開く(=アドビリーダーが起動しそこで開く) ・保存   の二択
       Chrome: “ダウンロード”フォルダーに保存される
なお、jpg ファイルはhtmlファイル同じくブラウザ上に開きます。
ソースはリンク先がhtmlファイルの場合と同様に、<a href="aaa.pdf">AAA</a>  としています。
Windows2007、 IE11、 Chrome33 です

念のため追記します。
私以外のwebページ閲覧者のwebブラウザ上でpdfファイルが開くようにしたいのです。そのためのソースの書方、あるいはwebブラウザの設定など教えてください。

あるグループのWEBページを管理していて、リンク先に指定したpdfファイルをブラウザで表示したいと思っています。ところが、自分のパソコン上ではブラウザ上にpdfファイルが表示できるのですが、WEBサイトに上げると、「ダウンロード」になってしまいます。
ブラウザはIEとChromeを使っています。
状況をもう少し詳しく述べますと、
PC上では   IE Chrome 共にブラウザ上で開く
Web 上では  IE : ・ 開く(=アドビリーダーが起動しそこで開く) ・保存   の二択
       Chrome: “ダウンロー...続きを読む

Aベストアンサー

おそらく、Webサーバーにおいて、 *.pdf に対する、mime type が設定されていないことによるものだと思います。
ブラウザの設定によるものでは無いでしょう。(一般の企業ページなどで、PDFファイルを直接開けますよね?)

とりあえず、メモ帳などで次の「.htaccess」ファイルを作って、pdfファイルと同じフォルダに、置いてみてください。

.htaccess
--------
AddType application/pdf .pdf
--------

これが設定されていると、Webサーバから*.pdfファイルを送信する際に、

Content-type: application/pdf

という行が追加され、「これから送るデータはPDFファイルだ」とブラウザに明示することになります。
この行を見て、ブラウザは、pdfプラグイン等を起動し、ブラウザ内でPDFの直接表示ができます。

上記のmime type 設定がなされていないと、httpヘッダには以下のような行が入ります。

Content-type: application/octet-stream

すなわち、PDFではなくただのバイナリデータ列だ、というような記述がなされてしまい、ダウンロードや、外部プログラムの起動というパターンになってしまいます。

本当は、Webサーバのどこに置いてもmime type が有効になるように、httpd.conf の方を修正したいところなんですが、それは大本のWebサーバ設定ファイルですので、サーバ管理者でないといじれないかもしれません。

また逆に、Webサーバ設定がGUIでできるようになっている場合、「mime typeの設定」というようなメニューで、「pdf」に対する「application/pdf」を追加してあげると良いでしょう。

おそらく、Webサーバーにおいて、 *.pdf に対する、mime type が設定されていないことによるものだと思います。
ブラウザの設定によるものでは無いでしょう。(一般の企業ページなどで、PDFファイルを直接開けますよね?)

とりあえず、メモ帳などで次の「.htaccess」ファイルを作って、pdfファイルと同じフォルダに、置いてみてください。

.htaccess
--------
AddType application/pdf .pdf
--------

これが設定されていると、Webサーバから*.pdfファイルを送信する際に、

Content-type: application/pdf

とい...続きを読む

Qjavascriptでセッションを取得

javaのsession.setAttribute()でセットした値をjavascriptで取得することは可能なのでしょうか?
可能であれば、手法を教えていただければと思います。
よろしくお願いします。

Aベストアンサー

セッションIDの保存はcookieかURLに連結する方法しか有りませんから、
JavaScriptでdocument.cookieや<a href="">を解析するなどしてセッションIDを取得することは可能だと思います。

セッションIDとセッションの値・内容との関連づけはサーバーで行われていますから、
その値を取得するにはAjaxなどで読み込むとかしないと無理だと思います。

QBLOB型のPDF出力の方法

BLOB型にPDFファイルが格納されているテーブルの列を、select文で抽出して、拡張子にpdfをつけてファイル出力したのですが、BLOBで定義している最大サイズで必ず出力されてしまいます。

pdf のファイルをテキストで開いてみると、エンド(%%EOF)以降が空欄でBLOBのサイズの大きさまで充填されていました。

BLOB型にPDFファイルを格納してある場合の出力方法はどうすればいいのでしょうか?

Aベストアンサー

SELECTした結果をリダイレクトすると、桁揃えされてるので、
BLOBに限らずVARCHARもフル桁出力されちゃうと思います。
#1に書いたように、INTO DUMPFILEで1レコードずつ出力しましょう。

参考URL:http://dev.mysql.com/doc/refman/5.1/ja/select.html#id595348


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング