- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从连接到快速 Wifi 连接的手机上传 200 MB 的视频文件。我正在使用适用于 .NET 的 Azure 存储 SDK v12,但以下代码在上传进度约为 30% 后不断重置自身。当重置发生时,进度从0开始,不会抛出异常。
await blobClient.UploadAsync(stream, progressHandler: new Progress<long>(progress =>
{
// show progress bar
}), cancellationToken: cancellationToken);
v12支持上传大文件吗?如果我没记错的话,旧的 API 能够上传单个 block 。我的印象是上述上传方法会隐式处理分块。
如何使用最新的sdk上传大文件?
附注我尝试传递具有非常高并发性和 1 MB 传输大小的 StorageTransferOptions
,但没有任何区别。
编辑:等待很长时间后,我能够抛出异常。我看到多个任务被取消,因为
Cannot access a disposed object.
Object name: 'MobileAuthenticatedStream'.
at Mono.Net.Security.MobileAuthenticatedStream.StartOperation (Mono.Net.Security.MobileAuthenticatedStream+OperationType type, Mono.Net.Security.AsyncProtocolRequest asyncRequest, System.Threading.CancellationToken cancellationToken) [0x00245] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/System/Mono.Net.Security/MobileAuthenticatedStream.cs:410
at System.Net.Http.HttpConnection.WriteAsync (System.ReadOnlyMemory`1[T] source) [0x00118] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:1008
at System.IO.Stream.CopyToAsyncInternal (System.IO.Stream destination, System.Int32 bufferSize, System.Threading.CancellationToken cancellationToken) [0x000e7] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corert/src/System.Private.CoreLib/shared/System/IO/Stream.cs:152
at Azure.Core.RequestContent+StreamContent.WriteToAsync (System.IO.Stream stream, System.Threading.CancellationToken cancellation) [0x00094] in <7b1dc95b0b4841539beb48023c1128d3>:0
at Azure.Core.Pipeline.HttpClientTransport+PipelineRequest+PipelineContentAdapter.SerializeToStreamAsync (System.IO.Stream stream, System.Net.TransportContext context) [0x0007c] in <7b1dc95b0b4841539beb48023c1128d3>:0
at System.Net.Http.HttpContent.CopyToAsyncCore (System.Threading.Tasks.ValueTask copyTask) [0x00022] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/HttpContent.cs:361
因此,blobClient
中似乎内置了并行化功能,但它仍然失败。此外,我无法使用 https://www.nuget.org/packages/Microsoft.Azure.Storage.DataMovement因为它不适用于 Xamarin Forms
。
最佳答案
如果您想将文件分块上传到Azure Blob存储,请引用以下代码
public async Task upload(Stream stream){
string connectionString = "";
string containerName = "upload";
string blobName = "";
BlockBlobClient blobClient = new BlockBlobClient(connectionString, containerName, blobName);
List<string> blockList = new List<string>();
while (true) {
byte[] b = new byte[1024 * 1024];
var n = await stream.ReadAsync(b, 0, 1024 * 1024);
if (n == 0) break;
string blockId = Guid.NewGuid().ToString();
string base64BlockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(blockId));
await blobClient.StageBlockAsync(base64BlockId, new MemoryStream(b, true));
blockList.Add(base64BlockId);
}
await blobClient.CommitBlockListAsync(blockList);
}
<小时/>
更新
如果您想使用sas token,请引用以下代码
var uri = new Uri($"https://{storageAccountName}.blob.core.windows.net/{containerName}/{blobName}?{sasToken}");
BlockBlobClient blobClient = new BlockBlobClient(uri);
关于Azure存储: BlobClient keeps resetting itself while uploading large files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65499942/
我最近一直在学习 Azure,发现有 2 个用于处理 blob 的类:CloudBlobClient 和 BlobClient。 CloudBlobClient 来自 Microsoft.Azure.
我有一个具有 Blob 触发器的 Azure 函数,在我的函数方法参数中,我通过 BlobClient 公开 Blob 本身以及上传的文件的名称。 [FunctionName("MyFunc")]
我有一个具有 Blob 触发器的 Azure 函数,在我的函数方法参数中,我通过 BlobClient 公开 Blob 本身以及上传的文件的名称。 [FunctionName("MyFunc")]
我有以下代码将文件上传到我的 Azure 存储: 读取文件流如下: FileStream fileStream = File.OpenRead(filePath); 并传递给函数=> publ
我对 C# azure sdk 感到困惑。 我想要实现的目标。 将文件从我的计算机上传到 azure 中的文件夹。 例如 本地 MyFiles -- Folder1 -- file.t
我想将图像上传到Azure,当正确上传后我想删除原始的本地镜像。为此,我需要知道上传何时成功/完成。 docs的BlobClient.uploadWithResponse提及它返回Response 。
我想将图像上传到Azure,当正确上传后我想删除原始的本地镜像。为此,我需要知道上传何时成功/完成。 docs的BlobClient.uploadWithResponse提及它返回Response 。
我见过的大多数(全部?)Azure 存储 Python SDK 示例都演示了创建一个 BlobServiceClient,然后创建一个 BlobClient 来上传/下载 blob( ref1 , r
我想创建一个 Azure SDK BlobClient知道 Blob Uri。我可以这样做: StorageSharedKeyCredential storageCredential = ne
我正在尝试通过内存流将 JSON 上传到 Azure blob。当我调用 UploadAsync 时,我的应用程序挂起。如果我将 UploadAsync 调用移到 StreamWriter 大括号之外
我正在尝试使用 BlobClient 从 Azure 存储中删除多个 Blob blob class . private static void DeleteBlobsFromContainer(Ur
我正在尝试从连接到快速 Wifi 连接的手机上传 200 MB 的视频文件。我正在使用适用于 .NET 的 Azure 存储 SDK v12,但以下代码在上传进度约为 30% 后不断重置自身。当重置发
我注意到在调试跟踪中我当前的方法正在触发 blob 上的 HEAD - 大概是为了检查它是否已经存在。我知道它永远不会,如果它确实存在我想覆盖。我只想直接 PUT 来缩短几毫秒,重要的是减少 Appl
我正在尝试从连接到快速 Wifi 连接的手机上传 200 MB 的视频文件。我正在使用适用于 .NET 的 Azure 存储 SDK v12,但以下代码在上传进度约为 30% 后不断重置自身。当重置发
我注意到在调试跟踪中我当前的方法正在触发 blob 上的 HEAD - 大概是为了检查它是否已经存在。我知道它永远不会,如果它确实存在我想覆盖。我只想直接 PUT 来缩短几毫秒,重要的是减少 Appl
在 Azure Blob 存储中,这两个不同对象上的这两种方法有什么区别?什么时候使用 ContainerInstance.ListBlobsSegmented() 与 CloudBlobClient
我正在创建一个 Azure Function 作为“中间件”,以便最终用户直接在浏览器中打开 Azure Blob 存储中的文件。我使用 AAD 来保护 Azure Function,并创建 SAS
在 Azure 存储 v12 SDK 中,如何使用 Blob URI 和 BlobServiceClient 创建 Blob 客户端? 在 v11 中,我们可以通过以下方式做到这一点: var clo
在 Azure 存储 v12 SDK 中,如何使用 Blob URI 和 BlobServiceClient 创建 Blob 客户端? 在 v11 中,我们可以通过以下方式做到这一点: var clo
我正在从 Azure SDK 11 转换为 12,但在 C# 库中找不到 CloudBlockBlob.IsSnapshot() 的等效项。我怎样才能做等价的? 最佳答案 我想 storage sdk
我是一名优秀的程序员,十分优秀!