Overview 概要
Many apps work with servers that accept uploads of files like images or documents, or use web service API endpoints that accept structured data like JSON. To upload data from your app, you use a URLSession
instance to create a URLSession
instance. The upload task uses a URLRequest
instance that details how the upload is to be performed.
多くのアプリは、画像や書類のようなファイルのアップロードを受け入れるサーバーと仕事します、またはJSONのような構造化データを受け入れるウェブサービスAPIエンドポイントを使います。あなたのアプリからデータをアップロードするには、あなたはURLSession
インスタンスを使って、URLSession
インスタンスを作成します。アップロードタスクは、URLRequest
インスタンスを使います、それはどのようにアップロードが実行されるかについて詳述します。
Prepare Your Data for Upload あなたのデータをアップロードのために準備する
The data to upload can be the contents of a file, a stream, or data, as is the case in Listing 1. アップロードするデータは、ファイル、ストリーム、またはデータの内容であることができます、コード出力 1 での場合のように。
Many web service endpoints take JSON-formatted data, which you create by using the JSONEncoder
class on Encodable
types like arrays and dictionaries. As shown in Listing 1, you can declare a structure that conforms to Codable
, create an instance of this type, and use JSONEncoder
to encode the instance to JSON data for upload.
コード出力 1 で示されるように、あなたはCodable
に準拠するある構造体を宣言して、この型のインスタンスを作成します、そしてJSONEncoder
を使ってそのインスタンスをアップロード用のJSONデータにエンコードします。
There are many other ways to create a data instance, such as encoding an image as JPEG or PNG data, or converting a string to data by using an encoding like UTF-8. データインスタンスを作成する多くの他の方法があります、たとえば画像をJPEGまたはPNGデータとしてエンコードする、または文字列をデータへとUTF-8のようなエンコーディングを使うことで変換するなど。
Configure an Upload Request アップロードリクエストを構成設定する
An upload task requires a URLRequest
instance. As shown in Listing 2, set the http
property of the request to "
POST
"
or "PUT"
, depending on what the server supports and expects. Use the set
method to set the values of any HTTP headers that you want to provide, except the Content-Length
header. The session figures out content length automatically from the size of your data.
アップロードタスクは、URLRequest
インスタンスを必要とします。コード出力 2 で示されるように、リクエストのhttp
プロパティ"
POST
"
または"PUT"
に設定してください、そのサーバーがサポートおよび期待するのは何かに依存して。set
メソッドを使って、あなたが提供することを望むあらゆるHTTPヘッダの値を設定してください、ただしContent-Length
ヘッダは除いて。セッションは、内容の長さをあなたのデータのサイズから自動的に計算します。
Create and Start an Upload Task アップロードタスクを作成して開始する
To begin an upload, call upload
on a URLSession
instance to create an uploading URLSession
instance, passing in the request and the data instances you’ve previously set up. Because tasks start in a suspended state, you begin the network loading process by calling resume()
on the task. Listing 3 uses the shared URLSession
instance, and receives its results in a completion handler. The handler checks for transport and server errors before using any returned data.
アップロードを始めるには、upload
をURLSession
インスタンス上で呼び出して、アップロードを行うURLSession
インスタンスを、あなたが以前に準備しておいたリクエストとデータインスタンスを渡して、作成してください。タスクは待機状態で開始することから、あなたはネットワークロード処理を、resume()
をそのタスク上で呼び出すことによって開始します。コード出力 3 は、共有URLSession
インスタンスを使います、そしてそれの結果を完了ハンドラにおいて受け取ります。ハンドラは、転送およびサーバーエラーについて、何らかの返されたデータを使う前に、確認します。
Alternatively, Upload by Setting a Delegate あるいは、委任先を設定することによってアップロードする
As an alternative to the completion handler approach, you can instead set a delegate on a session you configure, and then create the upload task with upload
. In this scenario, you implement methods from the URLSession
and URLSession
protocols. These methods receive the server response and any data or transport errors.
完了ハンドラ手法の代替として、あなたは代わりにある委任先をあなたが構成設定するセッション上で設定できます、そしてそれからアップロードタスクをupload
で作成します。このシナリオでは、あなたはメソッドをURLSession
およびURLSession
プロトコルから実装します。これらメソッドは、サーバー応答と何らかのデータまたは転送エラーを受け取ります。