問題タブ [nsurlsessionuploadtask]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
file-upload - iOS で NSURLSession マルチパート フォーム データを使用してファイルをアップロードできない
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL;
マルチパートフォームデータを使用した方法で動画・画像ファイルをアップロードしようとしています。しかし、どういうわけかファイルをアップロードできず、" stream ended unexpectedly
" エラーが発生します。
要件
- ビデオ/画像ファイルをサーバーにアップロードする
- アプリはバックグラウンド アップロードをサポートする必要があります (アプリがバックグラウンドに移行した後もアップロード プロセスを続行します)
- サーバーは、データがマルチパート フォーム データを使用して送信されることを想定しています。
これを達成するために使用されるメソッド/API
NSURLSession バックグラウンド セッション API (完全なコードを以下に示します)
2.
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL
課題/直面している問題
stream ended unexpectedly
この API をアップロード プロセスに使用するたびに " " エラーが発生する
注意点
NSURLConnection
の代わりに使用している場合、アップロードは同じコードで成功していますNSURLSession
。NSURLSession
バックグラウンド アップロード プロセスは、ファイルの場所 (NSURL
) をパラメーターとして想定し、NSData を受け入れません。アップロード前にファイルを変換することNSData
はできません。つまり、ファイル本体に NSData を追加することはできません。
次の点で助けが必要
形成されているマルチパートフォームデータボディに間違いはありますか (注 - 同じコードが NSURLConnection で動作しています)
私のアプローチのどこが間違っていますか?
NSURLSession backgroundSession
アップロードをサポートするために、サーバー レベルで何か変更を加える必要がありますか? (データ解析か何かで?)ファイルのアップロードに使用されているコードは次のとおりです
NSString *BoundaryConstant = @"----------V2ymHFg03ehbqgZCaKO6jy";
ios - URLSessionUploadTask が即座に自動的にキャンセルされる
URLSessionUploadTask
新しく作成されたものがすぐにキャンセルされるという奇妙な問題が発生しています。Xcode 8 の現在のベータ版のバグかどうかはわかりません。
投稿しようとしているコードは一度だけ正常に実行されたため、バグである可能性があると思われます。その後、変更は加えられず、単に機能しなくなりました。はい、文字通り一度実行した後、動作を停止しました。最後にエラーを投稿します。
以下にコードを掲載しますが、最初にここでのロジックがどのように機能するかを要約します。
私のテスト、またはユーザー公開 API (Playgrounds またはアプリで直接使用するための IE) は、authorize
メソッドを呼び出します。このauthorize
メソッドはbuildPOSTTask
、有効な URL を構築URLSessionUploadTask
し、メソッドによって使用されるを返しますauthorize
。
そうは言っても、コードは以下のとおりです。
セッション:
アップロード タスクを作成する関数:
上記の関数によって作成されたタスクを使用する認証関数:
テストでこのエラーを見つけました:
次のエラーで常に即座に失敗します。
エラー Domain=NSURLErrorDomain Code=-999 「キャンセルされました」 NSErrorFailingURLStringKey = https://anilist.co/api/auth/access_token?client_secret=削除&grant_type=authorization_code&redirect_uri=genericwebsitethatshouldntexist.bo&client_id=ibanez-hod6w&code=削除}
次の点に注意してください。
- セッションで使用される URL は有効です。
- すべての資格情報が有効です。
- 以前は発生しなかった「キャンセルされた」エラーで即座に失敗します。どこでもタスクをキャンセルしていないため、システムによってキャンセルされています。
- 無期限実行が有効になっているプレイグラウンドでも失敗します。これは私のテストに限定されません。
これが私が試したことのリストです:
- これはバグだと思うので、まずプロジェクトをクリーンアップし、派生データを削除し、すべてのシミュレーターをリセットしようとしました。それらのどれも機能しませんでした。
- Macを再起動するところまで行きました...
- 強力なポインターがないためにアップロード タスクの割り当てが解除され、次に を呼び出しているという小さな疑いの下で、によって作成されたタスクを返すように
cancel
書き直して、テストの変数に割り当てました。タスクはまだキャンセルされていました。authorize
buildPOSTTask
私がまだ試していないこと (ただし、これらに取り組んでいる間、他のアイデアを受け入れます):
- 物理デバイスで実行します。これは iOS 10 プロジェクトであるため、現在 iPad に iOS 10 をダウンロードしています。編集:試してみましたが、これを行うことはできません。
私は何を試してみるべきかについてのアイデアがありません。生成されたログには有用な情報がないようです。
編集:
プロジェクト全体をここに投稿することにしました。とにかく完成したらオープンソースになり、私が取得したAPI認証情報はテストアプリ用です。
ios - 進行中の複数のビデオのアップロード
たとえば、進行状況ビューを使用した複数のビデオのアップロードを探しています。ここで私はステップを定義しました。
- ギャラリーを開き、ビデオを選択します。
- ギャラリーからビデオを選択し、選択内容を編集した後、サム イメージを作成します。
- 選択したすべてのビデオは、テーブルビューまたはコレクション ビューでサム イメージとともに表示されます
- Tableview または Collection ビューでビデオのアップロード プロセスを進行状況とともに表示します。
誰でもそれを行う方法を知っています、私は私にとって役に立ちます。
NSUrlsession UPload タスクを使用できますが、実装できない可能性があります。
ios - Objective-CのNSURLSessionUploadTaskの例?
こんにちはNSURLSessionDataTask
、アプリで次のようにバックグラウンド http 呼び出しに使用しています。
しかし、2 つのサーバーでhttps://demo.demosite.comとhttp://214.43.45.35/を実行しましたが、 dataTaskWithRequest:request を試したところ、両方のサーバーがサポートされていません。バックグラウンドでサポート?.
NSURLSessionUploadTask
アプリが実行されていないときのバックグラウンドでのサポート。誰でもNSURLSessionUploadTask
コールバックの例を共有できますか?
ios - NSURLSessionUploadTask サーバーの応答を読み取る方法
NSURLSessionUploadTaskを使用してファイルをアップロードしています。
ここに私のコードの一部が完全ではありません
しかし問題は、サーバーが送り返す JSON 応答を取得できないことです。
次のデリゲートも起動していませんが、他のデリゲートは起動しています
私が使用しているコード:
代表者に合わせました
- NSURLSessionDataDelegate
- NSURLSessionDelegate
- NSURLSessionTaskDelegate
ありがとう