viernes, 20 de noviembre de 2015

guardar y mostrar una imagen o un archivo en la base de datos - Primefaces



METODO PARA GUARDAR LA FOTO - TENIENDO EN CUENTA QUE producto.DTO es mi BEAN donde esta guardada tanto el url de donde queda la imagen y el archivo que voy a procesar.

ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String realPath=(String) servletContext.getRealPath("");//obtenemos  la dirección del //contexto donde estas trabajando, para despues generar un archivo en esa direccion
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        String txtField = ec.getRequestParameterMap().get("myform:txtField");
        String filePath ec.getRealPath(String.format("/imagenes/%s",productoDTO.getPro_foto().getFileName())); //obtenemos el nombre del archivo para proceder a guardarlo en la carpeta del contexto en //este caso /imagenes
        
        try {
            FileOutputStream fos = new FileOutputStream(filePath);
            fos.write(productoDTO.getPro_foto().getContents());
            fos.flush();
            fos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,String.format("Archivo cargado: %s ", productoDTO.getPro_foto().getFileName()),
                String.format("Mensaje: %s", txtField)));
String urlfinal= filePath.replace(realPath, "");
productoDTO.setFotoUrl(urlfinal); // este metodo guarda la url donde quedo guardado el archivo en el bean productoDTO despues de esto simplemente ingresas tu bean a la base de datos y ya quedo listo para ser invocado.

____________________________________________________________________________





Formulario de ingreso


debe ser de tipo <h:form enctype="multipart/form-data">

hay que desactivar el ajax en el command button para que no tengas problemas, si este esta acompañado de un calendario vas a tener problemas con ellos por lo que te sugiero que no uses actionlistener si no mas bien el action para que puedas direccionarte a una pagina nueva despues del ingreso.


<h:outputText value="Fotografía de producto" for="foto" />
<p:fileUpload value="#{tubean.fileuploadvariable}" mode="simple" skinSimple="true"/> 


La variable donde guardaras tu foto en tu bean debe de ser de tipo  UlpadedFile ej:

private UploadedFile pro_foto;
recuerda sus respectivos getter y setter

domingo, 1 de noviembre de 2015

Algoritmo para convertir de binario a decimal

http://ingenieropaulo.blogspot.com.co/2012/10/algoritmo-para-convertir-de-decimal.html

Algoritmo fibonacci recursivo en c sharp

FIBONACCI RECURSIVO



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n;
            Console.WriteLine("digite la cantidad de terminos");
            n = int.Parse(Console.ReadLine());
            int y = fibo(n-1);
            Console.WriteLine(y);
            Console.Read();

        }
        static int fibo(int n)
        {
            if (n < 2)
            {
                return (n);
            }
            else
                return (fibo(n - 1) + fibo(n - 2));
        }
   
    }
}

Mas algoritmos recursivos http://algoritmosrecusivos.blogspot.com.co/

Algoritmo para convertir un numero de octal a decimal en c sharp


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
          
            string numero = textBox1.Text;
            int y = numero.Length;
            int Octal = int.Parse(numero);
            double sumador = 0;
            int x=y;
            for (int i = 0; i < y; i++)
            {
              
                int ultimo_numero = Octal % 10;
                Octal = Octal / 10;
                if (ultimo_numero == 9)
                {
                    i = y + 1;
                    MessageBox.Show("numero no es octal");
                  
                }
                else
                {
                    sumador = sumador + (Math.Pow(8, i) * ultimo_numero);

                }
                 x = i;
            
            }
            if (x==y-1)
                textBox2.Text = sumador.ToString();
            else
                textBox2.Text = "intenta de nuevo";

        }
    }
}

//por paulo andres escobar