Apex · Oracle · ORDS · REST

Enviar archivos word, xls, pdf, imágenes usando POST – Oracle APEX RESTful Services

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

post_files_1

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.

post_files_2

Luego en la pestaña de body, marcaremos el tipo binary y seleccionaremos el archivo.

post_files_3

Al enviar el request deberíamos tener el siguiente mensaje:

post_files_4

Y si comprobamos en base de datos veremos el archivo insertado:

post_files_5

Leave a comment