0

http://www.someurl.com/somefolder/filename.pdfなど、いくつかのpdfファイルへのリンクを含むWebページがあります。

ユーザーがこれらのリンクをクリックすると、認証が開始され、ユーザーがログインしてファイルをダウンロードできるようになります。私が達成しようとしているのは、ダウンロードが新しいウィンドウで開くことです。

コードへのアクセス/制御が制限されており、target=_blank属性を href に配置したり、javascript を追加したりすることはできません。認証後にダウンロードされるコードは次のとおりです。

string filename = Path.GetFileName(context.Request.PhysicalPath);

FileStream MyFileStream;
long FileSize;

string strMapPath = context.Server.MapPath(filename);
MyFileStream = new FileStream(strMapPath, FileMode.Open);
FileSize = MyFileStream.Length;

//Allocate size for our buffer array
byte[] Buffer = new byte[(int)FileSize];
MyFileStream.Read(Buffer, 0, (int)FileSize);
MyFileStream.Close();

//Do buffer cleanup
context.Response.Buffer = true;
context.Response.Clear();

//Add the appropriate headers
context.Response.AddHeader("content-disposition",
"attachement filename=" + filename);

//Add the right contenttype
context.Response.ContentType = "application/pdf";

//Stream it out via a Binary Write
context.Response.BinaryWrite(Buffer);

強制的context.Responseに新しいウィンドウで開くことはできますか?

4

2 に答える 2

3

新しいウィンドウを開くのはクライアント側のアクションContext.Responseですが、サーバー側のコマンドです。新しいウィンドウを開くには、クライアント側で何かをする必要があります。

元のページ ソースを変更してスクリプトを実行したり、HTML を変更したりできない場合は、目的を達成できません。要求に応じて、新しいウィンドウを開くスクリプトを含むページを返すことができますが、同じではありません。追加されたスクリプトを除いて、元のページを完全に再作成する必要があります (それができる場合は、元のページを変更するだけでよいと思います) か、ポップアップを開く別のページが必要です。

target="_blank"これに対する唯一の適切な解決策は、元のページを変更して、リンクに onclick ハンドラを追加するスクリプトまたはスクリプトを使用してポップアップ スクリプトを追加することです。これらは両方とも、あなたができないと言います。

于 2013-05-21T13:09:05.337 に答える