Skip to content

Instantly share code, notes, and snippets.

@steren
Created November 3, 2010 10:22
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save steren/660937 to your computer and use it in GitHub Desktop.
Save steren/660937 to your computer and use it in GitHub Desktop.
Upload and store image with Play! Framework
public class Application extends Controller {
public static void index() {
render();
}
public static void uploadPicture(Picture picture) {
picture.save();
index();
}
public static void getPicture(long id) {
Picture picture = Picture.findById(id);
response.setContentTypeIfNotSet(picture.image.type());
renderBinary(picture.image.get());
}
}
<ul>
#{list items:models.Picture.findAll(), as:'picture'}
<li>${picture.id} <img src="@{Application.getPicture(picture.id)}" /></li>
#{/list}
</ul>
#{form @Application.uploadPicture(), enctype:'multipart/form-data'}
<input type="file" name="picture.image" />
<input type="submit" name="submit" value="Save" />
#{/form}
@Entity
public class Picture extends Model {
public Blob image;
}
@stewarf
Copy link

stewarf commented Mar 18, 2013

Also you can use the routes file to create friendly urls in the image links:

routes

GET /images/blobstored/{id}.jpg Application.getPicture

index.html

<img src="/images/blobstored/${picture.id}.jpg" />

@arsenanai
Copy link

Hello, how to do the same in current version of play framework for java 2.1.1?
I didn't understand how to write " renderBinary(picture.image.get()); " in play 2?

@frankhn
Copy link

frankhn commented Aug 16, 2018

got it, what if i want to save the image to a folder and path to the database
please guide me , am using play 2.6; and how would i retrieve the image then? thanks in advance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment