適切なストレージの後にファイルシステムから画像を取得しようとしています(データベースに保存する代わりに、ディスクにコピーし、dbへのパスを配置します)
<img src="c:\images\mypic.jps">
に設定しますNot allowed to load local resource: file:///C://images//mypic.jpg
質問:これらのパスの問題を修正するには?どこに写真を保存する必要がありますか?そして、どこからそれらを取得する必要がありますか?
タグ<img src="c:\images\mypic.jpg">
を送信すると、ユーザーのブラウザは自分のファイルシステムの画像にアクセスします。 c:\images
にあるフォルダーに画像を保存する必要がある場合、images.jspのようなサーブレットを作成することをお勧めします。パラメーターとしてファイルの名前を取り、サーブレットの応答コンテンツをimage/jpgに設定してからロードしますサーバーの場所からの画像のバイト数と応答に配置します。
しかし、アプリケーションの作成には何を使用しますか?純粋なサーブレットですか?春? JSF?
ここ いくつかの情報、その方法を見つけることができます。
Chromeでは、ランタイムフラグ--allow-file-access-from-filesを使用してこの機能を許可できるはずです。
ただし、Chrome(37、38)の現在のバージョンに問題があるようです。ランタイムフラグ--disable-web-securityも渡さない限り、これは機能しません。
おそらく短期的な回避策を除き、これは受け入れられない解決策ですが、問題として特定されています: https://code.google.com/p/chromium/issues/detail?id=379206 =
多くのブラウザはセキュリティポリシーを変更して、ファイル共有やローカルリソースからも直接データを読み取れないようにしています。 Tomcatインスタンスがファイルを提供できる場所にファイルを配置し、生成するhtmlに「通常の」http URLを配置する必要があります。これは、Tomcatが「静的」コンテンツとしてサービスを提供するディレクトリにファイルを配置するファイルを読み取り、提供するサーブレットを提供することで実現できます。
次の2つの選択肢があります。
1つは、画像の処理にサーブレット内で使用する画像の識別子(画像のパスまたはハッシュ)をパラメーターとして受け取るServletImageLoaderを作成することです。サーバーからの画像。
2つ目は、アプリケーションのROOTフォルダー内にフォルダーを作成し、画像への相対パスを保存することです。
このアプリをローカルで実行したいだけで、セキュリティが問題にならない場合の簡単なexpressjs
ソリューションを次に示します。
server.js
またはapp.js
ファイルに、次を追加します。
app.use('/local-files', express.static('/'));
これにより、/local-files
の下のルートディレクトリ全体が提供されます。言うまでもなく、このアプリをローカルマシン以外の場所に展開することを計画している場合、これは非常に悪い考えです。
これで、次のことが簡単にできます。
<img src="/local-files/images/mypic.jps"/>
注:macOSを実行しています。Windowsを使用している場合、パス文字列から「C:\」を検索して削除する必要があります
このエラーは、この背後にセキュリティ上の問題があるため、ファイルシステムから直接データをロードできないことを意味します。私が知っている唯一の解決策は、ロードファイルを提供するWebサービスを作成することです。
Httpの場所とディスクの場所の概念は異なります。あなたがする必要があるのは:
summer.jpg
c:\images\summer.jpg
summer.jpg
で画像を表すdbレコードに挿入します<img src="images/summer.jpg" />
を使用しますc:\images\
の下で/images
を提供するもの(Apacheなど)が必要です。これができない場合は、ステップ#2でWebルートの下のどこかに保存する必要があります。例:c:\my-applications\demo-app\build\images
たとえば、C:/xamp/www/Archivos/images/templatemo_image_02_opt_20160401-1244.jpg
のように、イメージの名前を参照するために絶対パスを使用しないでください。 Webサーバー内の場所への参照を使用する必要があります。たとえば、プロセスの実行場所に応じて../../Archivos/images/templatemo_image_02_opt_20160401-1244.jpg
を使用します。