2017-10-03 9 views
0

をダウンロード可能なファイルを作成し、我々はC#Umbracoでダウンロード可能なファイルを作成しようとしているが、私はそれが仕事を得るように見えることはできません。私はSystem.Web.HttpContext.Current.Responseを使っています。この関数は、Umbraco CMSでボタンが押された後に呼び出されます。この関数は呼び出されましたが、ダウンロードで応答しません。この関数は、System.Web.Http.ApiControllerから継承するクラスに実装されています。は、最近のプロジェクトのためにC#(Umbraco)に

私はこの質問には、いくつかの他の質問と一致していることを認識してんだけど、私はさまざまなソリューションを試みたと私は何かを見下ろすてるような気がします。

ソースコード:

[Route("feedback")] 
[HttpPost] 
public void Add(FeedbackRequest feedback) 
{ 
    var Response = HttpContext.Current.Response; 

    string filePath = "C:\\testfile.txt"; 
    var file = new FileInfo(filePath); 

    if (file.Exists) 
    { 
     Response.Clear(); 
     Response.ClearHeaders(); 
     Response.ClearContent(); 
     Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
     Response.AddHeader("Content-Length", file.Length.ToString()); 

     //Doesn't work with plain/text either 
     Response.ContentType = "application/force-download"; 
     Response.Flush(); 
     Response.TransmitFile(file.FullName); 
     try 
     { 
      Response.End(); 
     } 
     catch (ThreadAbortException err) 
     { 

     } 
     catch (Exception err) 
     { 
     } 
    } 

} 
+0

あなたは、ASP.NET MVCを使用しているように見える:[ '' FilePathResult](https://msdn.microsoft.com/en-us/library/system.web.mvc.filepathresult(Vを返すと間違って何=対118).aspx)をあなたの行動から削除しますか? – Richard

+0

私はMvcControllerを使用していないので、私はfilepathresultのようなメソッドを使用することができません。私のコントローラはApiControllerです。 –

答えて

0

結果を返すべきである問題が私のjsでした。私が持っていた:

  $http.get('/someurl/Export').    
      success(function (data) { 
       //console.log(data); 
       $scope.importOutput = data; 
     }); 

修正だった:すべての答えのための

window.open('/someurl/Export', '_blank'); 

感謝。私はjsがうまくいっていると仮定しました。なぜなら、それは呼び出しを処理していたからですが、そうではないようです。

0

あなたのメソッドvoidとして設定されている、それは

public ActionResult Add(FeedbackRequest feedback) 
{ 
    string filepath = "some filepath"; 
    byte[] filedata = File.ReadAllBytes(filepath); 
    string contentType = MimeMapping.GetMimeMapping(filepath); 

    var contentInfo = new System.Net.Mime.ContentDisposition 
    { 
     FileName = "download filename", 
     Inline = false,//ask browser for download prompt 
    }; 

    Response.AppendHeader("Content-Disposition", contentInfo.ToString()); 

    return File(filedata, contentType); 
} 
+0

返信で次のようなことが起こった場合: 非呼び出し可能なメンバー 'ファイル'をメソッドのように使用することはできません。 –

+0

私はMvcControllerから継承して、Fileをメソッドとして使用できるようにしましたが、今は自分のパスを見つけることができません。私はさらにそれを見ていきます。 –

関連する問題