2012-01-10 27 views
1

<a>タグをクリックすると、ファイルを保存するダイアログボックスを強制する方法はありますか。リモートサーバーにはPDFファイルがあり、ユーザーがそのリンクをクリックすると、そのPDFファイルをローカルシステムにダウンロードします。HTMLを使用して保存ダイアログを表示する方法

おかげ

+0

オープン/セーブですか?ユーザーは何を開きたいのですか? –

+0

私の記事をよく読んでください。 'ユーザーがそのリンクをクリックすると、そのpdfファイルをローカルシステムにダウンロードします。'これは私が非常に明確だと思いますか? 編集:タイトルを変更します。ごめんなさい – Ozkan

答えて

3

あなたはブラウザがそれをロードするため、ファイルは常にブラウザの内側に表示されるファイルをリンクし、ファイル拡張子に基づいてコンテンツタイプを自動的に決定します。したがって、jpgイメージpdfなどのリンクをクリックすると、ブラウザはイメージ/ファイルであることを認識し、そのファイルを表示します。もちろん、ブラウザのショートカットメニューを使用して、[ファイルをディスクに保存する]オプションを使用して保存することもできます。

サーバー側からリンクをクリックしたときにこれを自動的に実行する場合は、自分でファイルを送信して、出力にいくつかのカスタムヘッダーを追加する必要があります。これを行う方法は、Response.TransmitFile()を使用して明示的にASP.NETアプリケーションからファイルを送信し、コンテンツタイプとコンテンツ処理ヘッダーを追加することです。

だから、あなたはヘッダーを使用するnededは以下liek:ここ

header('Content-Disposition: attachment; filename="filename.pdf"'); 

はexapmleはあなたを助けるかもしれないです:

http://www.west-wind.com/weblog/posts/2007/May/21/Downloading-a-File-with-a-Save-As-Dialog-in-ASPNET

3
は、あなたのヘッダーの値を変更

..

例通常 header('Content-Disposition: attachment; filename="downloaded.pdf"')

path = "path/to/file.pdf"; 
$filename = "file.pdf"; 
header('Content-Transfer-Encoding: binary'); // For Gecko browsers mainly 
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT'); 
header('Accept-Ranges: bytes'); // For download resume 
header('Content-Length: ' . filesize($path)); // File size 
header('Content-Encoding: none'); 
header('Content-Type: application/pdf'); // Change this mime type if the file is not PDF 
header('Content-Disposition: attachment; filename=' . $filename); // Make the browser display the Save As dialog 
-5

彼が探しているものはダウンロードしながら対話保存開いていませんホストからの何か。

彼はクライアントのファイルシステムからファイルを開くことを検討しています。これを行うには、入力タイプのファイルを使用する必要があります。しかし、あなたはjavascriptを使ってそれを操作する多くの特権を得ることはありません。

標準のhtmlでウィンドウの保存ダイアログを促す方法はありません。

ActiveXやFlashが必要です。

関連する問題