2009-05-21 4 views
2

私は自分のサーバー上のファイルではありませんへのリンクを持っている:訪問者がダウンロードするためのリンクをクリックすると、PDFのためにポップアップ表示する名前は、なるように、私はそれをしたいと思いダウンロードファイル名はどのように選択されていますか?変更する方法はありますか?

<a href="history.nasa.gov/monograph15b.pdf">NASA</a> 

をNASA.pdf、monograph15b.pdfではなく。

これはどの言語でも可能ですか?

+0

特定の言語を使用していますか? –

+0

ページはPHPファイルですが、html、jvavscriptなどを使用することができます。 –

答えて

3

自分でファイルをホストするつもりがない場合は、ファイルの内容を読み込み、その内容を適切なヘッダーを付けたブラウザに直接送信することができます。

PHPページが実行されるたびにNASAからファイルを再ダウンロードするため、これは遅くなることに注意してください。

<?php 
$filename = "http://history.nasa.gov/monograph15b.pdf"; 
$outputfilename = "NASA.pdf"; 

header("Content-Type: application/pdf"); 
header("Content-Disposition: attachment; filename=\"" . basename($outputfilename) . "\";"); 
header("Content-Transfer-Encoding: binary"); 
readfile("$filename"); 
?> 

このアプローチは、fopen()がHTTP経由でファイルを読み込む処理できるようにPHPを設定する必要があります。

+0

ありがとう、これは間違いなく動作します。 このようなことがクライアント側で可能かどうかを知っていますか?たとえば、サーバーにpdfにアクセスできないが、ユーザーはどうしますか?多分JavaScriptで? –

+0

私は私が従うかどうかわからない。もう少し説明できますか? –

+0

たとえば、nasaには、ユーザーがログインしている場合にのみアクセスできるpdfがいくつかあります。 スクリプトはpdfをダウンロードしてユーザーに送信すると想定します。この場合、スクリプトはNASAのサーバーにログインしていないため、pdfにアクセスすることはできません。 助けてくれてありがとう! –

2

実際に行う唯一の方法は、問題のファイルをまず自分のサーバーにダウンロードし、希望どおりの名前を付けてから、エンドユーザーにバックアップすることです。

+0

ファイルをホストする場合は、保存するファイル名をHTTPヘッダーに別の名前として指定できます –

+0

Matthias:元のポスター、彼自身がファイルをホストしていないことは明らかです。ヘッダーを変更しても、自分のダウンロードプロセス中にファイル名を変更する代わりに、ヘッダーを変更することはできません。 – TheTXI

+0

@matthias、そうです、それは別のサーバーにあります –

0

HTTPヘッダーContent-Dispositionヘッダーを調べると、ファイル名を指定できます。

+0

rajが指しているようなリモートファイルに使用できるものですか? – TheTXI

+0

いいえ、HTTPヘッダーを変更できるサイトの一部、ヘッダーを変更したWebページ、サービスを提供するページ、またはサービスを変更するハンドラーが必要です。途中でダウンロードしてください。 –

+0

そして、私はちょうど理由なしに行われるドライブバイダウンボードを愛しています。 –

0

ASP.NETのようなサーバー側のテクノロジを使用する必要があります。どこにボタンを置くか。ボタンをクリックすると、以下のタスクが実行されます。

)1. Response.Clear();

2. Response.AddHeader( "Content-Disposition"、 "attachment; filename = Nasa.pdf"); Response.ContentType = "application/octet-stream"; Response.ContentType = "application/octet-stream"; Response.ContentType = "application/octet-stream";

4. Response.WriteFile(context.Server.MapPath( "history.nasa.gov/monograph15b.pdf")); //アプリケーションのために実際に正しいパスを設定する必要があります。

+0

ありがとう!これはマークの提案と同様のアルゴリズムであるようです –

関連する問題