Compartir a través de


Ejemplo: Operaciones de archivo usando la SDK de Dataverse para .NET

Este ejemplo .NET 6.0 demuestra cómo realizar operaciones con columnas de archivo utilizando la SDK web de Dataverse para .NET.

Este ejemplo usa Microsoft.PowerPlatform.Dataverse.Client.ServiceClient.

Requisitos previos

  • Microsoft Visual Studio 2022
  • Accesa a Dataverse con Administrador del sistema o privilegios de personalizador del sistema.

Cómo ejecutar el ejemplo

  1. Clonar o descargar el repositorio de ejemplos de PowerApps.

  2. Abra el archivo PowerApps-Samples\dataverse\orgsvc\C#-NETCore\FileOperations\FileOperations.sln usando Visual Studio 2022.

  3. Edite el archivo appsettings.json. Establezca los parámetros Url y Username de la cadena de conexión según corresponda para su entorno de prueba.

    La URL del entorno se pueden encontrar en el centro de administración Power Platform. Tiene la forma https://<environment-name>.crm.dynamics.com.

  4. Cree la solución y luego ejecute el proyecto deseado.

Cuando se ejecute el ejemplo, se le solicitará en el navegador predeterminado que seleccione una cuenta de usuario del entorno e introduzca una contraseña. Para evitar tener que hacer esto cada vez que ejecuta un ejemplo, inserte un parámetro de contraseña en la cadena de conexión en el archivo appsettings.json. Por ejemplo:

{
"ConnectionStrings": {
    "default": "AuthType=OAuth;Url=https://myorg.crm.dynamics.com;Username=someone@myorg.onmicrosoft.com;Password=mypassword;RedirectUri=http://localhost;AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;LoginPrompt=Auto"
  }
}

Consejo: puede establecer una variable de entorno de usuario denominada DATAVERSE_APPSETTINGS en la ruta del archivo appsettings.json almacenado en cualquier lugar de su ordenador. Los ejemplos utilizarán ese archivo de configuración de aplicaciones si la variable de entorno existe y no es nula. Asegúrese de cerrar la sesión y volver a iniciarla después de definir la variable para que surta efecto. Para establecer una variable de entorno, vaya a Configuración > Sistema > Acerca de, seleccione Configuración avanzada del sistema y luego elija Variables de entorno.

Salida de muestra

El resultado del ejemplo deberá ser ahora similar a esto:

Creating file column named 'sample_FileColumn' on the account table ...
Created file column named 'sample_FileColumn' in the account table.
Created account record with accountid:5fb4f993-7c55-ed11-bba3-000d3a9933c9
Uploading file Files\25mb.pdf ...
Uploaded file Files\25mb.pdf
Downloading file from accounts(5fb4f993-7c55-ed11-bba3-000d3a9933c9)/sample_filecolumn ...
Downloaded the file to E:\GitHub\PowerApps-Samples\dataverse\webapi\C#-NETx\FileOperations\FileOperationsWithActions\bin\Debug\net6.0//downloaded-25mb.pdf.
Deleted the file using FileId.
Deleted the account record.
Deleting the file column named 'sample_filecolumn' on the account table ...
Deleted the file column named 'sample_filecolumn' in the account table.

Demostraciones

El código para este ejemplo se incluye en el archivo Program.cs.

El proyecto usa una clase Utility para realizar operaciones que impliquen la creación o recuperación de datos de esquema. Esta clase está en el archivo Utility.cs.

Este proyecto realiza estas operaciones:

Crear una columna de archivo

La función Utility.CreateFileColumn crea una columna de archivo llamada sample_FileColumn en la tabla de cuentas con un valor MaxSizeInKb de 10 MB.

Actualizar una columna de archivo

La función Utility.UpdateFileColumnMaxSizeInKB actualiza el valor MaxSizeInKb de la columna de archivo sample_FileColumn a 100 MB.

Consejo: Si desea crear algunos escenarios de error porque el tamaño de la columna del archivo es demasiado pequeño, comente esta línea.

Recuperar el valor MaxSizeInKb de la columna del archivo

Utility.GetFileColumnMaxSizeInKb recupera el valor MaxSizeInKb valor de la columna de archivo sample_FileColumn y la almacena en una variable llamada fileColumnMaxSizeInKb.

Crear un registro contable

Antes de que se pueda cargar un archivo en la columna de archivo, debe existir un registro.

Cargar un archivo

Para cargar un archivo PDF llamado 25MB.pdf hacia la columna de archivo sample_FileColumn en el registro de cuenta, este ejemplo utiliza un método estático UploadFile que acepta todos los parámetros necesarios para realizar las siguientes solicitudes:

  1. Inicialice la carga con la Clase InitializeFileBlocksUploadRequest
  2. Procese la respuesta con la Clase InitializeFileBlocksUploadResponse para obtener FileContinuationToken que se utilizará en todas las siguientes solicitudes.
  3. El método UploadFile acepta un parámetro llamado fileColumnMaxSizeInKb y usa ese valor para probar el tamaño del archivo. Si el archivo es más grande que el límite configurado de la columna del archivo, arrojará un error.
  4. Divida el archivo en bloques de 4 MB y envíe cada bloque usando la Clase UploadBlockRequest. Cada instancia debe incluir una cadena codificada en base64 para identificar de forma única el bloque. Esta solicitud no tiene ningún valor de respuesta para procesar.
  5. Después de enviar todos los bloques, utilice la Clase CommitFileBlocksUploadRequest con una matriz de valores de cadena codificados en base64 para finalizar la operación.
  6. Procese la respuesta con la Clase CommitFileBlocksUploadResponse para obtener el valor FileId que se utilizará para eliminar el archivo.

Descargar el archivo

Para descargar el archivo PDF llamado 25MB.pdf que se acaba de cargar hacia la columna de archivo sample_FileColumn en el registro de cuenta, este ejemplo utiliza un método estático DownloadFile que acepta todos los parámetros necesarios para realizar las siguientes solicitudes:

  1. Si el archivo se cargó correctamente, inicie la descarga con la Clase InitializeFileBlocksDownloadRequest
  2. Procese la respuesta con la Clase InitializeFileBlocksDownloadResponse para obtener FileContinuationToken que se utilizará en todas las siguientes solicitudes.
  3. Cree una instancia de una variable List<byte> para capturar las partes del archivo a medida que se descarga.
  4. Descargue el archivo en bloques de 4 MB con múltiples solicitudes usando la Clase DownloadBlockRequest.
  5. Procese cada respuesta con la Clase DownloadBlockResponse para obtener el byte[] parcial desde la propiedad Data. Agregue esa porción a la List<byte>.
  6. Después de recibir todos los bloques, devuelva List<byte> como una matriz.
  7. El archivo se guarda en el directorio actual. Puede intentar abrir el archivo para confirmar que se cargó y descargó correctamente.

Eliminar el archivo

Si el archivo se cargó correctamente, use la Clase DeleteFileRequest para borrar el archivo usando el valor FileId devuelto por el CommitFileBlocksUploadResponse. Esta solicitud no tiene ningún valor de respuesta para procesar.

Limpiar

Para dejar el sistema en el estado anterior a la ejecución del ejemplo, hace lo siguiente:

  • Eliminar el registro de cuenta
  • Eliminar la columna de archivo

Consulte también

Usar datos de columna de archivo
Ejemplo: Operaciones de archivo usando la API web de Dataverse
Usar datos de columna de imagen
Ejemplo: Operaciones de imagen usando la SDK de Dataverse para .NET

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).