UploadOperation 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
执行异步上传操作。 有关后台传输功能的概述,请参阅 在后台传输数据。 下载 代码示例的后台传输示例 。
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
- 继承
- 属性
- 实现
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() |
启动异步上传操作。 |