Compartir a través de


del método File.StartUpload

Inicia una nueva sesión de carga de fragmentos y carga el primer fragmento. El contenido del archivo actual no cambia cuando se complete este método. El método es idempotente (y por tanto no cambia el resultado) mientras usa los mismos valores para uploadId y stream.

La sesión de carga finaliza cuando use el método CancelUpload(Guid) o tras completar la sesión de carga pasando el resto del contenido del archivo mediante los métodos ContinueUpload(Guid, Int64, Stream) y FinishUpload(Guid, Int64, Stream) .

Por ejemplo, puede pasar un archivo de 35 MB dividiéndolo en tres secuencias de 10 MB y una secuencia de 5 MB, y cargándolo de esta manera (con los valores de desplazamiento resultantes de 10, 20 y 30 MB):

StartUpload(GUID, stream1)
ContinueUpload(GUID, 10 MB, stream2)
ContinueUpload(GUID, 20 MB, stream3)
FinishUpload(GUID, 30 MB, stream4)

Los métodos StartUpload(Guid, Stream) y ContinueUpload(Guid, Int64, Stream) devolverán el tamaño del total de ejecución de datos cargados en bytes, por lo que puede pasar los valores devueltos para usos posteriores de ContinueUpload(Guid, Int64, Stream) y FinishUpload(Guid, Int64, Stream)

Espacio de nombres:  Microsoft.SharePoint.Client
Ensamblados:   Microsoft.SharePoint.Client.Silverlight (en Microsoft.SharePoint.Client.Silverlight.dll);  Microsoft.SharePoint.Client.Phone (en Microsoft.SharePoint.Client.Phone.dll)  Microsoft.SharePoint.Client (en Microsoft.SharePoint.Client.dll)

Sintaxis

'Declaración
Public Function StartUpload ( _
    uploadId As Guid, _
    stream As Stream _
) As ClientResult(Of Long)
'Uso
Dim instance As File
Dim uploadId As Guid
Dim stream As Stream
Dim returnValue As ClientResult(Of Long)

returnValue = instance.StartUpload(uploadId, _
    stream)
public ClientResult<long> StartUpload(
    Guid uploadId,
    Stream stream
)

Parámetros

  • stream
    Tipo: System.IO.Stream

    La secuencia que contiene el primer fragmento para cargar.

Valor devuelto

Tipo: Microsoft.SharePoint.Client.ClientResult<Int64>
El tamaño de los datos cargados en bytes.

Comentarios

El ejemplo siguiente se muestra cómo sobrescribe un archivo existente mediante los métodos StartUpload, ContinueUploady FinishUpload .

        protected void UploadFile(object sender, EventArgs e)
        {
            var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
            using (var clientContext = spContext.CreateUserClientContextForSPHost())
            {
                //Get file from Shared Documents library and overwrite it.
                var documentsFolder = clientContext.Web.GetFolderByServerRelativeUrl("/Shared Documents");
                Microsoft.SharePoint.Client.File uploadFile = documentsFolder.Files.GetByUrl("file name");
                clientContext.Load(uploadFile);
                clientContext.ExecuteQuery();
                
                //Fetch new version of file from resources. Write the file contents to a stream.
                var inputFile = Properties.Resources.<resource file>;
                var inputStream = new MemoryStream();
                inputStream.Write(inputFile, 0, inputFile.Length);
                inputStream.Position = 0;

                //Set up size of fragments to upload.
                int chunkSize = 1000000;
                int index = 0;

                Int64 offset = 0;
                var myGuid = Guid.NewGuid();

                List<byte[]> chunkList = new List<byte[]>();

                while ( inputStream.Position < inputStream.Length)
                {
                    byte[] buffer = new byte[chunkSize];
                    int chunkBytesRead = 0;
                    while (chunkBytesRead < chunkSize)
                    {
                        int bytesRead = inputStream.Read(buffer, chunkBytesRead, chunkSize - chunkBytesRead);
                        MemoryStream stream = new MemoryStream();
                        stream.Write(buffer, 0, buffer.Length);
                        if (bytesRead == 0)
                        {
                            break;
                        }
                        chunkBytesRead += bytesRead;
                        if (index == 0)
                        {
                            offset = uploadFile.StartUpload(myGuid, stream).Value;
                            clientContext.ExecuteQuery();
                        }
                        else if (inputStream.Position == inputStream.Length)
                        {
                            uploadFile.FinishUpload(myGuid, offset, stream);
                            clientContext.ExecuteQuery();
                        }
                        else
                        {
                            offset = uploadFile.ContinueUpload(myGuid, offset, stream).Value;
                            clientContext.ExecuteQuery();

                        }
                    }

                    index++;
                }               

            }
            
        }

Este método actualmente solo está disponible en Office 365.

Vea también

Referencia

clase File

Miembros File

Espacio de nombres Microsoft.SharePoint.Client

Cargar archivos grandes muestra aplicación para SharePoint