Le lien de votre condition "Comment gérer les uploads de fichier pour mon application?" explique comment vous pouvez télécharger l'image.
Pour héberger les images, vous devez utiliser la banque de données du service de stocker et de servir de l'image avec vos autres données.
Voici un exemple de code. Il est conçu comme une esquisse, pour la façon dont vous pouvez avoir votre propre entité (j'.g. d'affaires, utilisateurs, etc) ont un champ d'une image. Je l'ai ignoré toute erreur de manipulation et de récupération pour simplifier le code.
La déclaration de l'entité avec l'image. Vous pouvez imaginer avoir d'autres domaines, comme par exemple les balises, emplacement, etc
@Entity
public class MyImage {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
Blob image;
public MyImage() { }
public MyImage(String name, Blob image) {
this.name = name;
this.image = image;
}
// JPA getters and setters and empty contructor
// ...
public Blob getImage() { return image; }
public void setImage(Blob image) { this.image = image; }
}
Ensuite, lorsque vous commencez à accepter des images (attention pour les cas où une image avec le même nom a déjà été téléchargé en plus du fichier type télécharger des échecs). ServletFileUpload
et IOUtils
sont des classes qui font partie de l'Apache Commons bibliothèque.
// Your upload handle would look like
public void doPost(HttpServletRequest req, HttpServletResponse res) {
// Get the image representation
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iter = upload.getItemIterator(req);
FileItemStream imageItem = iter.next();
InputStream imgStream = imageItem.openStream();
// construct our entity objects
Blob imageBlob = new Blob(IOUtils.toByteArray(imgStream));
MyImage myImage = new MyImage(imageItem.getName(), imageBlob);
// persist image
PersistenceManager pm = PMF.get().getPersistenceManager();
pm.makePersistent(myImage);
pm.close();
// respond to query
res.setContentType("text/plain");
res.getOutputStream().write("OK!".getBytes());
}
Et enfin, quand vous voulez servir l'image de son nom:
Blob imageFor(String name, HttpServletResponse res) {
// find desired image
PersistenceManager pm = PMF.get().getPersistenceManager();
Query query = pm.newQuery("select from MyImage " +
"where name = nameParam " +
"parameters String nameParam");
List<MyImage> results = (List<MyImage>)query.execute(name);
Blob image = results.iterator().next().getImage();
// serve the first image
res.setContentType("image/jpeg");
res.getOutputStream().write(image.getBytes());
}