UploadOperation 类

定义

执行异步上传操作。 有关后台传输功能的概述,请参阅 在后台传输数据。 下载 代码示例的后台传输示例

public ref class UploadOperation sealed : IBackgroundTransferOperationPriority
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UploadOperation final : IBackgroundTransferOperationPriority
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UploadOperation : IBackgroundTransferOperationPriority
Public NotInheritable Class UploadOperation
Implements IBackgroundTransferOperationPriority
继承
Object Platform::Object IInspectable UploadOperation
属性
实现

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
应用功能
internetClient internetClientServer privateNetworkClientServer

示例

以下示例演示如何配置和开始基本上传操作。

using Windows.Foundation; 
using Windows.Networking.BackgroundTransfer;
using Windows.Storage.Pickers;
using Windows.Storage;

private async void StartUpload_Click(object sender, RoutedEventArgs e)
{
    try
    {
        Uri uri = new Uri(serverAddressField.Text.Trim());
        FileOpenPicker picker = new FileOpenPicker();
        picker.FileTypeFilter.Add("*");
        StorageFile file = await picker.PickSingleFileAsync();

        BackgroundUploader uploader = new BackgroundUploader();
        uploader.SetRequestHeader("Filename", file.Name);

        UploadOperation upload = uploader.CreateUpload(uri, file);

        // Attach progress and completion handlers.
        HandleUploadAsync(upload, true);
    }
    catch (Exception ex)
    {
        LogException("Upload Error", ex);
    }
}

注解

应用终止后,应用应在下次启动时使用 GetCurrentUploadsAsync 枚举所有现有的 UploadOperation 实例。 终止使用后台传输的 UWP 应用时,未完成的上传将保留在后台。 如果应用在终止后重启,并且这些未完成的操作未枚举并重新引入当前会话,它们将过时并继续占用设备资源。超时注意事项

  • 1.) 通过 TCP/SSL 为上传建立新连接时,如果未在五分钟内建立连接尝试,则会中止连接尝试。
  • 2 建立连接后,两分钟内未收到响应的 HTTP 请求消息将中止。 假设已建立 Internet 连接,后台传输最多会重试上传三次。 如果未检测到 Internet 连接,则在检测到 Internet 连接之前,不会进行其他尝试。

调试指南

在 Microsoft Visual Studio 中停止调试会话相当于关闭应用;PUT 上传暂停,POST 上传将中止。 即使在调试时,应用也应枚举,然后暂停、重启或取消任何持久上传。

但是,如果 Microsoft Visual Studio 项目更新(如对应用清单的更改)要求卸载并重新部署应用进行调试, 则 GetCurrentUploadsAsync 无法枚举使用以前的应用部署创建的持久操作。

版本历史记录

Windows 版本 SDK 版本 增值
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

属性

CostPolicy

获取并设置上传的成本策略。

Group

注意

Windows 8.1后,组可能会更改或不可用于发布。 请改用 TransferGroup

获取一个字符串值,该值指示上传所属的组。

Guid

这是特定上传操作的唯一标识符。 与上传操作关联的 GUID 在上传期间不会更改。

Method

获取要用于上传的方法。

Priority

获取或设置此上传操作在 BackgroundTransferGroup 中时的传输优先级。 可能的值由 BackgroundTransferPriority 定义。

Progress

获取上传操作的当前进度。

RequestedUri

获取要从其上传的 URI。

SourceFile

指定要上传的 IStorageFile

TransferGroup

获取此上传操作所属的组。

方法

AttachAsync()

返回可用于监视附加上传的进度和完成情况的异步操作。 调用此方法可让应用附加在上一个应用实例中启动的上传操作。

GetResponseInformation()

获取响应信息。

GetResultStreamAt(UInt64)

获取指定位置的部分上传响应。

MakeCurrentInTransferGroup()

确定上传传输操作 (的优先级,并在同一传输组中) 确定上传传输操作之后的任何传输的优先级。 对不属于传输组的传输调用此方法不起作用。

RemoveRequestHeader(String)

用于删除 HTTP 请求标头。

SetRequestHeader(String, String)

用于设置 HTTP 请求标头。

StartAsync()

启动异步上传操作。

适用于

另请参阅