AppData¶
Resumen¶
Esta página describe la carpeta AppData, que da a cada app un sistema de archivos simple y privado, cómo obtenerla inyectando IAppData y qué métodos ofrecen su raíz, sus carpetas y sus archivos. Está dirigida a quienes desarrollan apps.
Fuente: documentación de Nextcloud, «developer_manual/basics/storage/appdata», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
A menudo una app quiere almacenar datos. Sin embargo, no todos los datos que se almacenan pertenecen a los archivos de los usuarios. A menudo solo se quiere un almacenamiento muy simple para tener algunos archivos temporales. Para facilitarlo existe la carpeta AppData, que proporciona a cada app un sistema de archivos simple y privado.
Su uso es casi trivial cuando la app usa el AppFramework.
<?php
namespace OCA\MyApp\Controller\MyController;
use OCP\AppFramework\Controller;
use OCP\Files\IAppData;
use OCP\IRequest;
class MyController extends Controller {
/** @var IAppData */
private $appData;
public function __construct($appName,
IRequest $request,
IAppData $appData) {
parent::__construct($appName, $request);
$this->appData = $appData;
}
}
Esto da al controlador acceso al sistema de archivos simple IAppData de la app.
El sistema de archivos simple¶
IAppData usa el sistema de archivos simple. Es un sistema de archivos muy simplificado que permite asignarlo fácilmente, por ejemplo, a memcaches. El sistema de archivos tiene tres elementos: root, folder, file.
El root solo puede contener carpetas. Y cada carpeta solo puede contener archivos. Se limita así para mantener las cosas simples y permitir asignarlo fácilmente a otros backends. Por ejemplo, un administrador de sistemas podría elegir asignar los avatares a un almacenamiento rápido, ya que se usan a menudo.
Raíz¶
El elemento raíz solo puede contener carpetas. Hay 3 cosas que se pueden hacer con un elemento raíz:
getFolder: obtiene la carpeta que se solicita
newFolder: crea una carpeta nueva
getDirectoryListing: lista todas las carpetas de esta raíz
Carpeta¶
Una carpeta tiene algunas opciones más.
getDirectoryListing: lista todos los archivos de la carpeta
fileExists: comprueba si un archivo existe
getFile: obtiene un archivo
newFile: crea un archivo nuevo
delete: elimina una carpeta y su contenido
getName: obtiene el nombre de la carpeta
Archivo¶
getName: obtiene el nombre del archivo
getSize: obtiene el tamaño del archivo
getETag: obtiene el ETag del archivo
getMTime: obtiene la hora de modificación del archivo
getContent: obtiene el contenido del archivo
putContent: escribe contenido en el archivo
delete: elimina el archivo
getMimeType: obtiene el tipo MIME del archivo
read: obtiene un recurso para leer el archivo
write: obtiene un recurso para escribir en el archivo