2016-05-09 3 views
0

グリッドビューのリンクを使用するメソッドを追加しようとしていますが、ストリームの形式でサーバーからファイルを取得し、ユーザーに保存場所を尋ねるプロンプトが表示されます。私は、私のコントローラにSystem.Windows.Formsリファレンスを追加して、次のメソッドを追加しました。SaveFileDialogをWebページで使用できない

[HttpGet] 
[Authorize] 
public void DownloadAssetStream(int assetID) 
{ 
    //gStream created from server file. 
    Stream myStream = gStream; 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

    saveFileDialog1.Filter = "pdf files (*.pdf)|*.pdf|All files (*.*)|*.*"; 
    saveFileDialog1.FilterIndex = 2; 
    saveFileDialog1.RestoreDirectory = true; 

    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
      if ((myStream = saveFileDialog1.OpenFile()) != null) 
      { 
       // Write file from stream. 
       myStream.Close(); 
      } 
     } 
    } 
} 

そこにはエラーはありませんが、コードが行if (saveFileDialog1に当たったとき、それはどこにも行かないとダイアログが表示されません。私は何が欠けていますか?

+2

ファイルの保存ダイアログは、Windowsフォームコンポーネントです。 asp.netページでは動作しません。 – Nino

答えて

0

値処理するためにActionResultにあなたの行動の戻り値の型を変更する必要がaction

return File(gStream, "application/pdf", "DesiredNameToSave"); 

File結果を返すことができますファイルをストリームとして返す方法を示した便利な返信ですが、エクスプローラウィンドウを表示するには、ブラウザのセキュリティ上不可能です。ユーザが自分自身の目標位置を定義できるようにするには、ファイルをローカルにダウンロードし、どこに保存するかを選択できるブラウザ独自のダウンロードメカニズムを使用するだけで十分です。

2

ASP.NETアプリケーションでWindowsコントロールを使用できないことがありません。 Visual Studioでは動作しますが、現実の世界では動作しません。

代わりFileStreamResultを使用して、たとえば、ファイルダイアログを開き、ストリームに結果を送信しようとする:

return new FileStreamResult(gStream, "application/pdf"); 

2番目のパラメータは、コンテンツタイプで、例として、私はコンテンツタイプを使用しましたPDFファイル用。

+0

返信いただきありがとうございます。Windowsエクスプローラウィンドウ(Fileuploadコンポーネントなど)を使用して、ダウンロードストリームの場所を指定するように要求されました。上記のことは何もしませんでした。ストリームのターゲット位置を定義するウィンドウを取得するには、私のchtml razorファイルからDownloadAssetStreamを呼び出す必要がありますか? – user616076

+1

これは、ブラウザが決定するものであり、あなたのものではありません。そのアクションには、適切なルートに従ったURLでアクセスできます。 –

+0

あなたは全体のポイントを失っているように見えます。たとえファイルストリームを返しても、どこに保存するかを決定する必要があります。セキュリティのために、ほとんどのブラウザではエクスプローラスタイルのポップアップが許可されていないようですが、ブラウザをダウンロードしてプロジェクトマネージャに要求することはできません。 – user616076

0

あなたがサポート戻り値のすべての種類はいくつありました

public ActionResult DownloadAssetStream(int assetID) 
関連する問題