Columnas de archivo
Una columna de archivo se utiliza para almacenar datos de archivo hasta un tamaño máximo especificado. Una tabla personalizada o personalizable puede tener cero o más columnas de archivo más una colección de notas (anotaciones) con cero o un archivo adjunto en cada nota. SchemaName de la columna del archivo es EntityFile, LogicalName es entityfile.
Nota
¿No está seguro de entidad frente a tabla? Vea Desarrolladores: comprender la terminología en Microsoft Dataverse.
| API Web | SDK para .NET |
|---|---|
| FileAttributeMetadata | FileAttributeMetadata |
Para obtener información sobre los tipos de archivos que no están permitidos, consulte Pestaña General Configuración del sistema en la configuración Definir las extensiones de archivo bloqueadas para datos adjuntos.
Importante
Se aplican algunas restricciones al usar el archivo y los tipos de datos de imagen mejorados de Microsoft Dataverse. Si las claves administradas por el cliente (CMK) están habilitadas en el inquilino, los tipos de datos de IoT no están disponibles para las organizaciones del inquilino. Las soluciones que contienen tipos de datos excluidos no se instalan. Los clientes deben cancelar la suscripción a CMK para hacer uso de estos tipos de datos.
Todas las organizaciones de CMK a partir de la versión: 9.2.21052.00103 pueden admitir el uso de tipos de datos de archivo e imagen de Dataverse. Los archivos dentro de las organizaciones CMK están limitados a un tamaño máximo de 128 MB por archivo. Todos los archivos e imágenes dentro de las organizaciones de CMK se almacenarán en el almacenamiento relacional de Dataverse, en lugar del almacenamiento de blobs de archivos de Dataverse. Otras limitaciones:- Las descargas SAS de delegación de usuarios no son compatibles
- Las cargas y descargas fragmentadas están limitadas a una sola parte
Las columnas de archivo se admiten en SdkClientVersion 9.0.45.329 o superior y Web API, versión 9.1 o superior. Las columnas de archivo son compatibles con los portales de Power Apps solo en la tabla de notas (anotación).
Columnas de apoyo
Cuando se agrega una columna de archivo a una tabla, se crean algunas columnas adicionales para respaldarla.
Columna MaxValue
La columna MaxValue representa el tamaño máximo (en kilobytes) de los datos del archivo que la columna puede contener. Establezca este valor en el tamaño de datos más pequeño que pueda usar para su aplicación específica. Vea MaxSizeInKB property para el límite de tamaño permisible y el valor predeterminado.
Nota
MaxValue se establece cuando la columna Archivo se agrega a una tabla. Esto no se puede cambiar después de establecerse.
Recuperar datos de archivo
No puede usar los mensajes Retrieve y RetrieveMultiple para descargar los datos del archivo.
Para recuperar datos de columnas de archivos, utilice las siguientes API.
| API Web | SDK para .NET |
|---|---|
| ninguno | InitializeFileBlocksDownloadRequest, InitializeAttachmentBlocksDownloadRequest, InitializeAnnotationBlocksDownloadRequest |
| GET /api/data/v9.1/<entity-type(id)>/<file-attribute-name>/$value | DownloadBlockRequest |
Las transferencias de datos de archivo desde extremos de servicio web están limitadas a un máximo de 16 MB de datos en una sola llamada de servicio. Los datos de archivo más grandes que la cantidad se deben dividir en bloques de datos de 4 MB o más pequeños (fragmentos) donde cada bloque se recibe en una llamada API independiente hasta que se hayan recibido todos los datos de archivo. Es responsabilidad suya unir los bloques de datos descargados para formar el archivo de datos completo combinando los bloques de datos en la misma secuencia en que se recibieron.
Ejemplo: Descargar con fragmentación
Solicitud
GET [Organization URI]/api/data/v9.1/accounts(id)/myfileattribute/$value
Headers:
Range: bytes=0-1023/8192
Respuesta
206 Partial Content
Body:
byte[]
Response Headers:
Content-Disposition: attachment; filename="sample.txt"
x-ms-file-name: "sample.txt"
x-ms-file-size: 8192
Location: api/data/v9.1/accounts(id)/myfileattribute?FileContinuationToken
La fragmentación se decide en función de la existencia del encabezado Range en la solicitud. El formato del valor de encabezado Range es: startByte-endByte/total bytes. El archivo completo se descargará (hasta 16 MB) en una solicitud si no hay encabezado Range incluido. Para la fragmentación, el encabezado de respuesta Location contiene el parámetro consultable FileContinuationToken. Use el valor de encabezado de ubicación que se proporciona en la solicitud GET siguiente para recuperar el siguiente bloque de datos en la secuencia.
Cargar archivo de datos
No puede usar los mensajes Create y Update para cargar los datos del archivo.
Para cargar datos de columnas de archivos, utilice las siguientes API.
| API Web | SDK para .NET |
|---|---|
| ninguno | InitializeFileBlocksUploadRequest, InitializeAttachmentBlocksUploadRequest, InitializeAnnotationBlocksUploadRequest |
| PATCH /api/data/v9.1/<entity-type(id)>/<file-attribute-name> | UploadBlockRequest |
| ninguno | CommitFileBlocksUploadRequest, CommitAttachmentBlocksUploadRequest, CommitAnnotationBlocksUploadRequest |
Puede cargar archivos completos, hasta el tamaño máximo configurado o en fragmentos.
Nota
A partir de la fecha de publicación de este artículo, se eliminó la restricción de usar la carga fragmentada para archivos de más de 16 MB. Las API de fragmentación seguirán estando disponibles para mantener la compatibilidad con las soluciones existentes.
Ejemplo: código .NET C# para la carga completa de archivos mediante la API web
static async Task FullFileUploadAsync(
Uri urlPrefix,
string customEntitySetName,
string entityId,
string entityFileOrAttributeAttributeLogicalName,
string fileRootPath,
string uploadFileName,
string accessToken)
{
var filePath = Path.Combine(fileRootPath, uploadFileName);
var fileStream = File.OpenRead(filePath);
var url = new Uri(urlPrefix, $"{customEntitySetName}({entityId})/{entityFileOrAttributeAttributeLogicalName}");
using (var request = new HttpRequestMessage(new HttpMethod("PATCH"), url))
{
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Content = new StreamContent(fileStream);
request.Content.Headers.Add("Content-Type", "application/octet-stream");
request.Content.Headers.Add("x-ms-file-name", uploadFileName);
using (var response = await Client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
}
}
}
Ejemplo: Cargar con fragmentación
El siguiente es el método heredado para cargar un archivo de datos de 16 MB o más dividiendo el archivo en bloques de datos de 4 MB o menos. Cuando el conjunto completo de bloques de datos se ha cargado y se ha enviado una solicitud de confirmación, el servicio web combinará automáticamente los bloques, en la misma secuencia que los bloques de datos se cargaron, en un archivo de datos único en Azure Blob Storage.
Primera solicitud
Solicitud
PATCH [Organization URI]/api/data/v9.1/accounts(id)/myfileattribute
Headers:
x-ms-transfer-mode: chunked
x-ms-file-name: sample.png
Solicitud (formulario alternativo)
Esta forma de solicitud utiliza un parámetro de cadena de consulta y admite nombres de archivos de idiomas que no son ASCII. Si el nombre del archivo se especifica en el encabezado y como un parámetro de cadena de consulta, el valor del encabezado tiene prioridad.
PATCH [Organization URI]/api/data/v9.1/accounts(id)/myfileattribute?x-ms-file-name=测试.txt
Headers:
x-ms-transfer-mode: chunked
Respuesta
200 OK
Response Headers:
x-ms-chunk-size: 4096
Accept-Ranges: bytes
Location: api/data/v9.1/accounts(id)/myfileattribute?FileContinuationToken
Siguiente solicitud
Solicitud
PATCH [Organization URI]/api/data/v9.1/accounts(id)/myfileattribute?FileContinuationToken
Headers:
Content-Range: bytes 0-4095/8192
Content-Type: application/octet-stream
x-ms-file-name: sample.png
Body:
byte[]
Respuesta
206 Partial Content
Eliminar datos de archivo
Para eliminar los datos de la columna de archivo del almacenamiento, utilice las siguientes API.
| API web (REST) | .NET API (SOAP) |
|---|---|
| DELETE /api/data/v9.1/<entity-type(id)>/<attribute-name> | DeleteFileRequest |
Vea también
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).
Comentarios
Enviar e ver os comentarios