2016-11-22 4 views
-3

仮想パスからファイルをダウンロードしたい。仮想URLからファイルをダウンロードするC#

http://localhost:60181/DocTemplates/Forms/HO/test.pdf

ファイルは、動的拡張のためになり、それは、PDFファイルやドキュメントかもしれ意味。

バイトストリームを使ってファイルをダウンロードしたいのは、最初にファイルをバイトストリームに変換し、ダウンロードした後にダウンロードしたいということです。

ハイパーリンクをクリックすると上記のファイルがダウンロードされます。

私はこのタスクを行う方法がわかりません、私に助言を与えてください。

ありがとうございました。

+1

これを探していますか?例えば。いくつかのコードスニペットを提供してください – rbr94

+0

あなたの実際の質問はあなたが入力したものとまったく反対であると思われます。 URLから何かをダウンロードしたくない場合は、リクエストを送信したときにクライアントにファイルを送信するコントローラを作成する必要があります。単純な 'File(somePath)'コールでFileResultを返すことができます。あなたのコントローラがパラメータにマップされた後に何かがあるようにルーティング設定を設定する必要があります。例えば、あなたのコントローラが 'FormsController'ならば、残りのURLをパラメータにマップするか、別々の部分に分けてパラメータを分けるルートを作ることができます。 –

+0

ファイルを返す方法やさらに多くの質問がたくさんありますルーティングの設定方法については、こちらをご覧ください。 –

答えて

1

コントローラのWebクライアントのような単純なものを使用しました。

System.Net.WebClient client = new WebClient(); 
client.DownloadFile("url", "directory + filename"); 

ダウンロードするファイルのURLと、ファイルを保存するディレクトリとファイル名を指定するだけです。

これで、コントローラのファイルで必要な操作を行うことができます。

また、試すことができます。

using (FileStream fs = File.OpenRead(path)) 
{ 
    int length = (int)fs.Length; 
    byte[] buffer; 

    using (BinaryReader br = new BinaryReader(fs)) 
    { 
     buffer = br.ReadBytes(length); 
    } 

    Response.Clear(); 
    Response.Buffer = true; 
    Response.AddHeader("content-disposition",  String.Format("attachment;filename={0}", Path.GetFileName(path))); 
    Response.ContentType = "application/" +  Path.GetExtension(path).Substring(1); 
    Response.BinaryWrite(buffer); 
    Response.End(); 
} 
+0

パスをバイナリストリームに変換してダウンロードします。 –

+0

なぜあなたはそれをバイナリストリームに変換したいのですか?あなたは知らないうちにAPIを使ってそれを行っていますか? –

1
using (var client = new WebClient()) 
{ 
    var content = client.DownloadData(url); 
    using (var stream = new MemoryStream(content)) 
    { 
     ... 
    } 
} 

は、多分あなたは、あなたがこの問題を解決するために、すでに試みている何

+0

コード全体を記述してください。 –

関連する問題