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
Clonar o descargar el repositorio de ejemplos de PowerApps.
Abra el archivo
PowerApps-Samples\dataverse\orgsvc\C#-NETCore\FileOperations\FileOperations.sln
usando Visual Studio 2022.Edite el archivo appsettings.json. Establezca los parámetros
Url
yUsername
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.
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:
- Inicialice la carga con la Clase InitializeFileBlocksUploadRequest
- Procese la respuesta con la Clase InitializeFileBlocksUploadResponse para obtener FileContinuationToken que se utilizará en todas las siguientes solicitudes.
- El método
UploadFile
acepta un parámetro llamadofileColumnMaxSizeInKb
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. - 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.
- 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.
- 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:
- Si el archivo se cargó correctamente, inicie la descarga con la Clase InitializeFileBlocksDownloadRequest
- Procese la respuesta con la Clase InitializeFileBlocksDownloadResponse para obtener
FileContinuationToken
que se utilizará en todas las siguientes solicitudes. - Cree una instancia de una variable
List<byte>
para capturar las partes del archivo a medida que se descarga. - Descargue el archivo en bloques de 4 MB con múltiples solicitudes usando la Clase DownloadBlockRequest.
- Procese cada respuesta con la Clase DownloadBlockResponse para obtener el
byte[]
parcial desde la propiedadData
. Agregue esa porción a laList<byte>
. - Después de recibir todos los bloques, devuelva
List<byte>
como una matriz. - 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).