
Anteriormente vimos cómo usar el POST y PUT para envió de JSON de tamaño pequeño. En este blog veremos como enviar BLOBs es decir, documentos Word, Excel, pdf , imágenes, etc.
El proceso es que recibiremos el bloque de datos en una variable que es interpretada por APEX – REST , todo este cuerpo llega en la variable :body.
Entonces debemos tomar el body del Request (en formato binario), y procesarlo.
Si es Word, Excel, pdf podemos insertarlo directamente a la tabla, de preferencia para ello también se debe solicitar los parámetros de tipo de archivo, mine type y nombre de archivo.
Aquí les dejo una web de ejemplos con su respectivo mime_type y aquí la documentación en Oracle
Empecemos con el ejemplo.
Creación de tabla script 1
Luego crearemos un método REST tipo POST
Incluiremos el siguiente código, para fines demostrativos agregue las respuestas de success.
declare
l_demo_id demo_files.id%type;
begin
insert into demo_files (
file_name
, mime_type
, file_blob
)
values (
:file_name
, :mime_type
, :body
) returning id into l_demo_id;
apex_json.open_object;
apex_json.write('success',true);
apex_json.write('message', 'File inserted with ID: ' || l_demo_id);
apex_json.close_object;
exception
when others then
apex_json.open_object;
apex_json.write('success',false);
apex_json.write('message', sqlerrm);
apex_json.close_object;
end;
Y para la prueba usaremos Postman
Primero los parámetros que se enviaran, muy importante enviar el mime type y file name para luego poder renderizar los datos correctamente.
Luego en la pestaña de body, marcaremos el tipo binary y seleccionaremos el archivo.
Al enviar el request deberíamos tener el siguiente mensaje:
Y si comprobamos en base de datos veremos el archivo insertado: