2016-10-31 10 views
0

私のEmberアプリには、ユーザーのすべてのアップロードファイルを保存するためのpublic/uploads/...フォルダがあります。これには画像、動画、さらに.htmlファイルが含まれており、アプリ内でiframeを使用して配信します。開発中にEmberアプリからiframeコンテンツを配信する

私はコンポーネントでこれらのiframeにサービスを提供しようとしている:

<iframe src="/public/uploads/folder/file.html"> 

開発は、おそらくfile.htmlの要求を受け、資産とは対照的に、それは通常のGET要求のように見えるようにルータをチェックしている奉仕。これは正しくエラーで私の葉:

Uncaught UnrecognizedURLError

は、私はそれが特定のフォルダを提供したいember-cliのdevのサーバーを指示する方法はありますか?

+0

ember-cli-mirageをお使いですか? もしあなたが追加する必要があります: 'this.passthrough( '/ public/uploads/folder/**');' からmirage/config.js –

+0

ありがとうございます。私は実際にそれを試みたが動作しません。私が知る限り、この要求はルータがページリクエストとして認識していて、私のルートでそれを見つけられないので、ミラージュには到着しません。 –

答えて

2

アップロードをpublicフォルダの外に保存するのが最善の方法です。別のuploadsフォルダにあります。

ember g server 

これは、あなたがしてカスタマイズすることができserver/index.jsを生成します。コマンドを実行し、特定のフォルダにサービスを提供するためのdevのサーバーを伝えるために

エクスポートされた関数内で次の行を追加します。

var express = require('express'); 
app.use('/uploads', express.static(__dirname + "/../uploads")); 

最後には、急行の依存関係をインストールし、あなたはすでにそれを使用していない場合:

npm install express --save-dev 

を今、エンバーdevのサーバーを起動した後、 uploadsフォルダにあるファイルはすべて提供できます。

+1

これは完全に機能します。しかし、正確に何が起こっているのですか?私が知ることから、 'server/index.js'は開発サーバ' ember-cli'をカスタマイズすることを可能にしています。 '/ upload/... 'へのリクエストを見たときにexpressを使うように指示していますか? –

関連する問題