2016-04-27 5 views
0

私はPDFファイルを別の(FILE-Server)サーバーマシンに置いており、MVCアプリケーションがホストされているIISマシンはそのファイルサーバーに対する権利を持っています。 IISのマシンから私は、次のURI経由のファイルにアクセスすることができます。ファイルをダウンロードして別のサーバーからファイル

file://file-server/data-folder/pdf/19450205.pdf 

は私がダウンロードリンクやボタンをクリックすることで、それぞれのファイルをダウンロードするために私のMVCアプリのユーザーを有効にしたいです。だからおそらく私はそのリンク/ボタンのいくつかのアクションを記述する必要があります。

は、私は次のように私の対処方法については、ファイルの戻り値の型を使用しようとしました:

public ActionResult FileDownload() 
{ 
    string filePth = @"file://file-server/data-folder/pdf/19450205.pdf"; 
    return File(filePth , "application/pdf"); 
} 

が、上記のコードはサポートされていないURIの例外を提供します。

また、配列内のバイトを読み取るためにFileStreamを使用してダウンロードしようとしましたが、ファイルが仮想パス内に置かれていないため、適切な「仮想パス」のエラーが発生します。

答えて

0
public ActionResult Download() 
{ 
    var document = = @"file://file-server/data-folder/pdf/19450205.pdf"; 
    var cd = new System.Net.Mime.ContentDisposition 
    { 
     // for example foo.bak 
     FileName = document.FileName, 

     // always prompt the user for downloading, set to true if you want 
     // the browser to try to show the file inline 
     Inline = false, 
    }; 
    Response.AppendHeader("Content-Disposition", cd.ToString()); 
    return File(document.Data, document.ContentType); 
} 
0

お返事ありがとうございますが、両方の提案が機能しませんでした。

ファイルをURI経由でアクセスする必要があるため、FileInfoを使用するとエラーが発生します。URI形式はサポートされていません。

私は、これは、以下のメカニズムを介して行わ取得するために管理:すべての

public ActionResult FaxFileDownload() 
    { 
     string filePth = @"file://file-server/data-folder/pdf/19450205.pdf"; 

     WebClient wc = new WebClient(); 
     Stream s = wc.OpenRead(filePth); 

     return File(s, "application/pdf"); 

    } 

感謝を。

関連する問題