どのようにダウンロードしたファイル名が選ばれ、それを変更する方法はありますか?

StackOverflow https://stackoverflow.com/questions/894298

  •  23-08-2019
  •  | 
  •  

質問

私は自分のサーバー上のファイルへのリンクを持っていません

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

私はmonograph15b.pdf訪問者がダウンロードするためのリンクをクリックすると、PDFのためにポップアップ表示する名前はNASA.pdfになるようにそれを作るのが好き、としません。

任意の言語で、このことは可能ですか?

役に立ちましたか?

解決

あなたがファイルを自分でホストする予定がない場合は、

は、ファイルの内容を読み込み、その後、適切なヘッダをブラウザに直接その内容を送信することができるかもしれない。

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

<?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");
?>

このアプローチはまた、PHPが設定されている必要があり、そののfopen() HTTP経由でファイルの読み込み処理することができます。

他のヒント

本当にそれを行うための唯一の方法は、まず、あなた自身のサーバーに問題のファイルをダウンロードし、あなたが望むようにという名前を付け、その後、エンドユーザーまで戻ってそれを提供することです。

HTTPヘッダーにのContent-処分のヘッダを見て、それはあなたをできるようになりますファイル名を指定します。

あなたは、ASP.NETのような任意のサーバーサイドの技術を使用する必要があります。あなたの中にページ上のボタンでどこに置きます。ボタンがクリックされたときには、次のタスクを実行します。

1)Response.Clear();

2)Response.AddHeader( "コンテンツの廃棄"、 "添付ファイル;ファイル名= Nasa.pdf");

3)Response.ContentTypeの= "アプリケーション/オクテットストリーム"

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top