2017-02-13 11 views
1

グレイスアプリケーションを配備した同じサーバーの外部フォルダからイメージをロードしたいと思います。 linux - user homeで言いましょう。grails 3イメージを外部にロードする

私はウェブ上で多くの記事を見つけましたが、成功はありません。 USERHOMEはpredifinedフォルダをある

<img src="${userhome}/image.jpg" /> 

<asset:image src="libs/test/1.jpg" alt=""/> 
<asset:image src="images/2.jpg" alt=""/> 
<img src="${asset.assetPath(src: '13123.jpg')}" /> 
<img src="\home\user\img\Desert.jpg" /> 

私のようなものが必要になります。

.gspコードが試みです。

と資産パイプラインプラグインを使用して別の質問私はこのエラーを取得する:

Byte array resource [resource loaded from byte array] cannot be resolved to URL 

答えて

1

あなたは資産タグで外部ファイルを指すことはできません。しかし、あなたは、ファイルシステムからファイルを取得し、バイト配列として応答にそれを「添付」、コントローラのアクションの例することができます

def getImage() { 
    byte[] imageInBytes = imageService.getImage() 
    response.with{ 
     setHeader('Content-length', imageInBytes.length.toString()) 
     contentType = 'image/jpg' // or the appropriate image content type 
     outputStream << imageInBytes 
     outputStream.flush() 
    } 
} 

サービスロジックは、次のようになります。

byte[] getImage() { 
    ByteArrayOutputStream baos = new ByteArrayOutputStream() 
    ImageIO.write(ImageIO.read(new File('/path/to/file')), "jpg", baos) 
    baos.toByteArray() 
} 

そして最後にあなたのGSPのIMGタグ:

<img ... src="${createLink(controller: 'imageController', action: 'getImage')}" /> 

はあなたがSerに、特定の画像を取得するためのIDとURLマッピングとプレイしたいと思うかもしれませ副論理。

+0

OK私はテスターとその作業。ギャラリーを構築してgrailsで画像をアップロードしたいのであれば、アセットプラグインや外部のどのアプローチが最適なのかだけ考えていましたか?ありがとうございます – Vanko

+0

ギャラリーにアセットを使用しない方が良いです。アプリを再デプロイすると、イメージが失われるためです。 –

+0

よろしくお願いいたします。私はあなたの例で実装しようとします。私はいつもDBを使って画像を保存するオプションがありますが、私はそのアイデアがあまり好きではありません。 – Vanko

関連する問題