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