File.StartUpload método
Inicia uma nova sessão de carregamento de bloco e carrega o primeiro fragmento. O conteúdo do arquivo atual não é alterado quando este método é concluída. O método é idempotente (e, portanto, não altera o resultado), desde que você use os mesmos valores para uploadId e stream.
A sessão de carregamento termina quando você usar o método de CancelUpload(Guid) ou quando você tiver concluído a sessão de carregamento passando o restante do conteúdo do arquivo por meio dos métodos ContinueUpload(Guid, Int64, Stream) e FinishUpload(Guid, Int64, Stream) .
Por exemplo, você pode passar um arquivo de 35 MB, dividindo-la em três fluxos de 10 MB e um fluxo de 5 MB e carregando-las dessa maneira (usando os valores de deslocamento resultantes de 10, 20 e 30 MB):
StartUpload(GUID, stream1)
ContinueUpload(GUID, 10 MB, stream2)
ContinueUpload(GUID, 20 MB, stream3)
FinishUpload(GUID, 30 MB, stream4)
Os métodos StartUpload(Guid, Stream) e ContinueUpload(Guid, Int64, Stream) retornam o tamanho do total em execução de dados carregados em bytes, para que você pode passar esses valores de retorno para usos subsequentes ContinueUpload(Guid, Int64, Stream) e FinishUpload(Guid, Int64, Stream)
Namespace: Microsoft.SharePoint.Client
Assemblies: Microsoft.SharePoint.Client.Silverlight (em Microsoft.SharePoint.Client.Silverlight.dll); Microsoft.SharePoint.Client.Phone (em Microsoft.SharePoint.Client.Phone.dll) Microsoft.SharePoint.Client (em Microsoft.SharePoint.Client.dll)
Sintaxe
'Declaração
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
uploadId
Tipo: System.GuidO identificador exclusivo da sessão de carregamento. Use esse identificador da chamadas subsequentes para os métodos ContinueUpload(Guid, Int64, Stream), FinishUpload(Guid, Int64, Stream)e CancelUpload(Guid) .
stream
Tipo: System.IO.StreamO fluxo que contém o primeiro fragmento de carregar.
Valor retornado
Tipo: Microsoft.SharePoint.Client.ClientResult<Int64>
O tamanho dos dados carregados em bytes.
Comentários
O exemplo a seguir mostra como substituir um arquivo existente usando os métodos StartUpload, ContinueUploade 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 está disponível atualmente apenas em Office 365.
Ver também
Referência
Microsoft.SharePoint.Client namespace
Carregar o aplicativo de amostra de arquivos grandes para SharePoint