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 要求訊息。 假設有網際網路連線能力,背景傳輸會重試最多三次上傳。 在未偵測到網際網路連線的情況下,除非進行其他嘗試,否則不會進行其他嘗試。

偵錯指引

在 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()

啟動非同步上傳作業。

適用於

另請參閱