Enivar imagen REST Service
#1
Escrito 11 febrero 2015 - 12:55
Amigos ¿Como enviar una imagen a un REST Service desde android?
El cliente tiene un servicio REST PHP bueno pues ya he logrado la conexión y con el RESTClient
y como algunos reciben parametros en get lo mando asi:
RESTClient1.BaseURL := 'http://serviciodelcliente.php?' + 'parametro=' + edit.Text+'¶metro=' + edit.Text;
y hasta ahora funciona bien pero me he encotrado que se requiere subir imagenes pero eso no se como se
envian desde el RESTClient espero sus respuestas.
#2
Escrito 11 febrero 2015 - 01:46
#3
Escrito 13 febrero 2015 - 11:54
#4
Escrito 17 febrero 2015 - 07:24
lo que hize fue codificar una imagen en base64 desde android y mandarla por get a mi REST php
el problema es al hacer la codificación desde android se tarda mucho hasta cerrar la aplicación
entonces pense en una solucion que no se como implementar bueno las imagenes se van a almacenar en una carpeta en un
servidor asi es que la pregunta es ¿Como subir una imagen a un servidor desde delphi?
Agradezco sus respuestas
#5
Escrito 19 febrero 2015 - 08:11
Una solución no por REST, es enviándolo por POST y utilizando en el cliente un Tidhttp.
procedure TForm9.Mifuncion(Bm : TBitMap); Var Stream : TMemoryStream; url : String; Res : String; IdHttp : TIdHTTP; begin IdHttp := TIdHTTP.Create(Nil); Stream := TMemoryStream.Create; Url := 'http://www.mipagina.com/miformulario.php'; Stream.LoadFromFile('miimagen.bmp'); //Forma #1 de obtener la imagen Bm.SaveToStream(Stream);//Forma #2 de obtener la imagen (solo una de las dos) Stream.Position := 0; Res := IdHttp1.Post(URL, Stream); //Puedes revisar la variable Res para ver si se ejecutó correctamente end;
Hay un tema que aún no entiendo en FireMonkey y es la codificación de las imágenes y cuando se pasan a Stream, ya que a pesar que se crea una variable de tipo TBitMap, esta acepta casi todos los formatos y tiene una codificación que probablemente no entienda php como bitmap.
De hecho eso pasa cuando utilizamos una variable Bitmap en la VCL y tratamos de leer una imagen Bitmap de Firemonkey.
En resumen, esta es la forma de enviar un archivo a un servidor, pero no he trabajado lo suficiente para garantizarte si lo que recibes en PHP es compatible con un Bitmap estándar que pueda interpretar PHP.
Saludos.
#6
Escrito 19 febrero 2015 - 08:20
La forma correcta de convertir un TBitMap de FireMonkey a un BitMap estándar o a otro formato que pueda interpretar PHP, es la siguiente.
var Surf: TBitmapSurface; Stream: TMemoryStream; saveParams : PBitmapCodecSaveParams ; begin Surf := TBitmapSurface.Create; Surf.Assign(imgCameraView.Bitmap); Stream := TMemoryStream.Create; try TBitmapCodecManager.savetostream(Stream, Surf, '.jpg'); //Aquí ya se tiene el stream para enviar a PHP en formato jpg.
no lo he probado con PHP, pero creo que debe funcionar.
Saludos.
#7
Escrito 23 febrero 2015 - 11:12
TidHTTP.POST()
#8
Escrito 23 febrero 2015 - 12:12
#9
Escrito 04 agosto 2020 - 09:35
Podrias compartir el codigo PHP donde recibes la imagen?, saludos!!!!!!!!!!!!!!!
#10
Escrito 04 agosto 2020 - 10:10
Podrias compartir el codigo PHP donde recibes la imagen?, saludos!!!!!!!!!!!!!!!
Hola fanchondo
Bienvenido a DelphiAccess, espero que ésto lo haya hecho alguien con PHP, porque veo que es con Delphi. Aquí hay varios compañeros que saben PHP.
Saludos