2016-11-14 5 views
0

私はボタンがあるページを作成し、クリックすると登録ページにリダイレクトしてPDFファイルをダウンロードする必要があります。だから、Umbracoにファイルアップロードフィールドがあり、そこに1つのファイルをアップロードしたドキュメントタイプを作成しました。そのテンプレートには、登録ページの部分的なビューを持つマクロが追加されています。登録完了後、このpdfファイルは自動的にダウンロードされます。Umbracoのメディアに保存されているPDFファイルをダウンロードできますか?

私の問題は、アップロードしたファイルがメディアライブラリに表示されていないことです。 URLは次のとおりです:/media/1051/filname.pdf。

enter image description here

コントローラでこのURLを取得しています。そのIDを使用してファイルを取得できませんでした。

[HttpPost] 
     public HttpResponseMessage DownloadFile([FromBody] DownloadEBookViewModel model) 
     { 
      int id = Convert.ToInt32(model.Url.Split('/')[2]); 
      var media = Umbraco.Media(id).Url; 


      if (!File.Exists(media)) 
       throw new HttpResponseException(HttpStatusCode.NotFound); 

      HttpResponseMessage Response = new HttpResponseMessage(HttpStatusCode.OK); 


      byte[] fileData = File.ReadAllBytes(media); 

      if (fileData == null) 
       throw new HttpResponseException(HttpStatusCode.NotFound); 

      Response.Content = new ByteArrayContent(fileData); 
      Response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 

      return Response; 
     } 

お手数ですがお手数ですが、ありがとう

答えて

0

の背後にあるコードでUmbracoヘルパーで作業する場合、私は取得項目

var media = Umbraco.TypedMedia(id).Url;

これはあなたのインテリセンスと強く型付けされたモデルを与えるために型指定されたバリアントを使用するように助言する

あなたはおそらく呼びたいメディアオブジェクトから物理ファイルを取得するには

byte[] fileData = File.ReadAllBytes(media.getPropertyValue("umbracoFile"));

代わりに:

byte[] fileData = File.ReadAllBytes(media);

(コードが未検証である)応答を

+0

おかげ。それは本当に私を助けた –

+0

あなたは歓迎です:) – Mark

関連する問題