Crear un aplicación en Grails que guarde una imagen
Descripción:
App de grails que guarde imágenes
Nivel: Básico
1
1.1
abrir consola cmd
1.2
ir al directorio donde se quiera crear la aplicación: en windows para navegar por directorios en consola se usa el comando cd.
2
Crear aplicación: una vez en el directorio deseado: escribir el siguiente comando:
grails create-app ImgsGrailsApp
2.2
escribir en la consola para entrar a la aplicación: cd ImgsGrailsApp
3
Crear clase de dominio: escribir en consola:
grails create-domain-class imagen
3.2
editar el archivo creado localizado en:
ImgsGrailsApp\grails-app\domain\imgsgrailsapp\Imagen.groovy
opcionalmente puedes abrir una interfaz grafica donde se editan comandos groovy
escribir el comando:
grails console
ImgsGrailsApp\grails-app\domain\imgsgrailsapp\Imagen.groovy
opcionalmente puedes abrir una interfaz grafica donde se editan comandos groovy
escribir el comando:
grails console
3.3
el archivo quedaría de la siguiente forma:
class Imagen {
Date lastUpdated
Date dateCreated
byte[] screenshot
static constraints = {
screenshot(maxSize:1073741824)
}
}
4
crear el controlador: escribir en consola:
grails create-controller imagen
4.2editar el archivo creado localizado en:
ImgsGrailsApp\grails-app\controllers\imgsgrailsapp\ImagenController.groovy
4.3
añadimos el siguiente codigo:
def scaffold = Imagen
def showImage = {
def imagen = Imagen.get( params.id )
response.outputStream << imagen.screenshot
response.outputStream.flush()
}
5
generamos las vistas: escribir el comando:
grails generate-views imagen
nos creara los archivos de edición, crear, listar y mostrar de la clase Imagen
localizados en:
ImgsGrailsApp\grails-app\views\imagen
5.1
abrimos el archivo:
ImgsGrailsApp\grails-app\views\imagen\list.gspen este archivo esta lo que se va a mostrar cuando se vea la lista de imágenes
-vamos a la linea donde esta
<g:each in="${imagenInstanceList}" status="i" var="imagenInstance"> <tr class="${(i % 2) == 0 ? 'even' : 'odd'}"> <td>
- a partir de aquí modificamos este td y quedaría de la siguiente manera
<g:link action="show" id="${imagenInstance.id}">${fieldValue(bean: imagenInstance, field: "id")}
<img width="20%" height="20%" alt="Img" src="http://localhost:8080/ImgsGrailsApp/imagen/showImage/${imagenInstance.id}">
</g:link>
5.2
abrimos el archivo:
ImgsGrailsApp\grails-app\views\imagen\show.gspen este archivo esta lo que se va a mostrar cuando se vea una de imágen
-vamos a la linea donde esta
<ol class="property-list imagen">
<g:if test="${imagenInstance?.screenshot}">
<li class="fieldcontain">
<span id="screenshot-label" class="property-label"><g:message code="imagen.screenshot.label" default="Screenshot" /></span>
<ol class="property-list imagen">
<g:if test="${imagenInstance?.screenshot}">
<li class="fieldcontain">
<span id="screenshot-label" class="property-label"><g:message code="imagen.screenshot.label" default="Screenshot" /></span>
-a partir de aqui añadimos el siguiente código, quedaría antes de cerrar el li
<g:link action="showImage" id="${imagenInstance.id}">${fieldValue(bean: imagenInstance, field: "id")}
<img alt="img" src="http://localhost:8080/ImgsGrailsApp/imagen/showImage/${imagenInstance.id}">
</g:link>
6
probamos la aplicación: escribimos el comando:
grails run-app
bueno.... yo estoy empezando con el tema de grails... cuando inicias te da una base de datos en el que podes introducir datos, pero al cerrar el localhost se pierden los datos guardados en la wep... queria saber si puedo crear una base de datos que guarde los contenidos agregados desde el explorador wep...
ResponderEliminarpara cualquier cosa respondeme aqui ya que no suelo acceder a mi correo...
ResponderEliminarBuen día A.J.L.R
ResponderEliminarSi se puede crear la base de datos y tener los contenidos agregados cada vez que corras tu aplicación.
en un post he hecho ese ejemplo para guardar los datos guardados.
http://grailsfacilito.blogspot.com/2011/06/catalogo-clientes-app-grails-mysql.html
Estimado... como sería la cuestión en lo relacionado a la subida de imágenes para que las mismas sean guardadas en un directorio local ... Gracias
ResponderEliminarno olviden < g : form action="save" enctype = " multipart / form-data " >
ResponderEliminar