問題タブ [resume-upload]

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.

0 投票する
1 に答える
1113 参照

ruby-on-rails - Ruby on Rails での再開可能なアップロード

RoR アプリで使用する resumable-file-upload コンポーネントを探しています。私はそれを見つけました: http://github.com/taf2/resume-up/tree/master (ネイティブRubyで構築されていますが、現在は廃止された製品であるGoogleギアが必要です..)

また、 http: //github.com/dassi/mediaclueは、ジャンプローダー Java アプレットを使用した別のアプリです。詳細: jumploader.com

Java アプレットを使用せずにこの機能を実現する方法はありますか?

0 投票する
1 に答える
2940 参照

nginx - upload_module と multipart/form を使用した nginx の再開可能なアップロード

現在、カスタムデスクトップアプリケーションからアップロードモジュール( http://www.grid.net.ru/nginx/upload.en.html )を使用してnginxサーバー上のWebサービスにアップロードし、送信する単純なマルチパートフォームPOSTを実行していますファイルの一部と、ファイルのメタデータを含む base64 でエンコードされた XML が別の部分に含まれています。

サーバーはこの POST を受信し、メタデータを読み取り、ファイルを処理する Web サービスに渡します。

私が今やりたいことは、アップロード モジュールの upload_resumable ディレクティブを使用して POST をいくつかのチャンクで実行し、切断の可能性を最小限に抑えて再開できるようにすることです。私は現在、ここで説明されているプロトコルに従ってこれを行うことができます: http://www.grid.net.ru/nginx/resumable_uploads.en.html

ファイルのバイト範囲をいくつかのヘッダーとともに送信して、いくつかの投稿でチャンクとセッションを識別し、すべての部分がアップロードされると、nginx はファイル名とパスを含む最終的な POST を作成し、それを upload_pass の場所に渡します (私の場合、djangoアプリへのCGI)。

ただし、プロトコルは POST の本文がバイト範囲で示されるバイトでなければならないことを示しているため、このメソッドを使用してマルチパート投稿を送信する方法については明確ではありません。上記で書いた XML も含めるために、最後の投稿が必要です。

XML を本文の最初のバイトとそれに属するバイト数を示すヘッダーとして送信することを考えることができますが、それはそのヘッダーを削除するために最終ファイルを余分に処理することを意味し、最終ファイルは潜在的に GB サイズの範囲になります。 .

他のアイデアはありますか?

0 投票する
1 に答える
886 参照

javascript - 再開可能な Youtube アップローダーはどのように機能していますか?

YouTube 動画アップローダーの仕組みをご存知ですか? ここでの興味深い機能は、壊れたアップロード プロセスを再開できることです (たとえば、ブラウザを閉じたり、その間にインターネット接続が失われた場合)。Java、Flash、またはその他のネイティブのものは使用していないようです。おそらく、派手な HTML5 のものはありますか? それともブラウザ固有の方法ですか?

0 投票する
1 に答える
1491 参照

performance - Delphi 2010を使用してアップロードルーチンを最適化する方法は?

まだリリースされていないDelphi2010アプリケーションを使用すると、ユーザーは自分のファイルをサーバーにアップロードできます。現在、HTTPS POSTを使用してファイルを送信していますが、(簡略化された)アルゴリズムは基本的に次のとおりです。

  1. ファイルを「スライス」に分割(各256KB)
  2. スライスごとに、サーバーにPOSTします

すなわち。1MBファイルの場合:

私はIndy10を使用してます。私はプロファイラーを何度も(ab)使用しましたが、アップロードルーチン自体を変更する以外に、最適化する余地はほとんどありません。

私もマルチスレッドを使用しており、コードを最適化するために最善を尽くしましたが、ベンチマークはそれでももっとうまくできると言っています(はるかに良いタイミングを達成する他のよく最適化されたソフトウェアがあります...ほぼ2倍私のアップロードルーチンと同じくらい速いです!)

私はそれが私のサーバーのせいではないことを知っています...これが私がまだ探求する必要があるアイデアです:

  1. スライスを1つのPOSTでグループ化しようとしましたが、当然これによりパフォーマンスが向上しました(20〜35%)が、再開機能が低下しました。

  2. SFTP / SSHの使用も考えましたが、高速かどうかはわかりません。

  3. Webソケットを使用して再開可能なアップロードを実装します(このコンポーネントのように)。速度についてもわかりません。

今私の質問は:アップロードをスピードアップするために私ができることはありますか?次の条件を満たせば、コマンドラインツール(ライセンスでアプリケーションと一緒に出荷できる場合)を含め、実装できる提案を受け入れることができます

  1. 再開可能なアップロードがサポートされています
  2. 速い!
  3. 合理的なメモリ使用量
  4. ログイン/ユーザー認証を保護して許可する

また、セキュリティ上の大きな懸念から、FTPは私が実装したいものではありません。

どうもありがとう!

0 投票する
1 に答える
920 参照

ios - Objective-Cで再開可能なアップロード

私のiOSアプリの一部は、サーバーへの大きなファイルのアップロードを実行することです。ユーザーのインターネット接続は必ずしも理想的ではありません。

再開可能なアップロードを実行する方法はありますか?

PSリクエストタイプはHTTPですが、サポートされていない場合は切り替えることができます。

0 投票する
2 に答える
812 参照

java - JavaクライアントからGrails Webアプリケーションへの再開可能なアップロード?

ほぼ 2 日間のグーグル検索と、ウェブ全体で見つけたいくつかの異なる可能性を試した後、最終的に答えが得られることを期待して、ここでこの質問をしています。

まず、私がやりたいことは次のとおりです。

単一サーバー上の複数のクライアント間で大量の大きなファイルを交換する目的で、クライアントとサーバー アプリケーションを開発しています。クライアントは純粋なJava (JDK 1.6) で開発され、Web アプリケーションはGrails (2.0.0) で開発されています。

クライアントの目的は、ユーザーが大量の大きなファイル (通常はそれぞれ約 2GB) を交換できるようにすることであるため、アップロードを再開できるように実装する必要があります。つまり、ユーザーがアップロードを停止および再開できるようにする必要があります。いつでも。

これが私これまでにしたことです:

私は実際にやりたいことをやり、大きなファイルをサーバーにストリーミングすることができましたが、生のソケットを使用してアップロードを一時停止および再開することもできました。サーバーに通常のリクエストを (Apache の HttpClient ライブラリを使用して) 送信し、サーバーから自由に使用できるポートを送信してもらい、サーバーで ServerSocket を開き、クライアントからその特定のソケットに接続します。

ここに問題があります:

実際、これには少なくとも 2 つの問題があります。

  1. これらのポートは自分で開くので、開いているポートと使用中のポートを自分で管理する必要があります。これは非常にエラーが発生しやすいです。
  2. 私は実際、膨大な量の (同時) 接続を管理する Grails の機能を回避しています。

最後に、私が今やるべきことと問題は次のとおりです。

上で述べた問題は容認できないので、Grails にこだわりながら、Java の URLConnection/HttpURLConnection クラスを使用することになっています。

サーバーへの接続と単純なリクエストの送信はまったく問題なく、すべて正常に機能しました。ストリーム (クライアントでは接続の OutputStream、サーバーでは要求の InputStream) を使用しようとしたときに問題が発生しました。クライアントの OutputStream を開いてデータを書き込むのは、とても簡単です。しかし、リクエストの InputStream からの読み取りは、そのストリームが常に emptyであるように見えるため、私には不可能に思えます。

サンプルコード

サーバー側(Groovy コントローラー)の例を次に示します。

これは私がクライアント側(Javaクラス)で行ったことです:

前述したように、問題はrequest.inputStream常に空の InputStream が生成されるため、そこから何も読み取れないことです (もちろん)。しかし、それはまさに私がやろうとしていることなので(ファイルをストリーミングしてサーバーにアップロードし、InputStream から読み取ってファイルに保存することができます)、これはかなり残念です。

さまざまな HTTP メソッドさまざまなデータ ペイロードを試し、コードを何度も再配置しましたが、問題を解決できなかったようです。

私が見つけたいもの

もちろん、私の問題の解決策を見つけたいと思っています。ヒント、コード スニペット、ライブラリの提案など、何でも大歓迎です。たぶん、私はそれをすべて間違っていて、まったく別の方向に進む必要があるのか​​もしれません.

では、サーバー側でポートを手動で開かずに、Java クライアントから Grails Web アプリケーションへのかなり大きな (バイナリ) ファイルの再開可能なファイル アップロードを実装するにはどうすればよいでしょうか?

0 投票する
2 に答える
3912 参照

python - Google Drive Python API 再開可能なアップロード エラー 401 が 2 時間後に発生する

まず第一に、これがばかげた質問でしたら申し訳ありません... このスクリプトに関連するテクノロジ (Python、ドライブ API、oauth 2.0 など) を使用しようとするのはこれが初めてです。質問を投稿する前に、これを約1週間検索して試してみたことを誓います。へへへ

Linux Debian のみの端末にある大きなファイル (3.5GiB) をアップロードするために google-api-python-client を使用しようとしています。小さいファイルのアップロードには成功していますが、大きいファイルをアップロードしようとすると、開始から約 1 ~ 2 時間後に HTTP 401 エラー (未承認) でアップロードが停止します。新しいアクセストークンを取得する方法を探していましたが、ほとんど成功していません.

これはこれまでの私の(更新された)コードです:

掘り下げた後、承認された http オブジェクトが 401 を受信した後、アクセス トークンを自動的に更新することがわかりました。実際にはアクセス トークンを変更していますが、まだ期待どおりにアップロードを続行していません...以下の出力を参照してください。

Python 2.5.2 がインストールされた debian lenny を使用しており、約 1 週間前に pip install を介して ssl と google-api-python-client をインストールしました。

助けてくれてありがとう。

編集:どうやら、問題は api ではありません。上記と同じコードを試しましたが、2 つの小さなファイルがあり、その間に 1h がありました (system.sleep())。出力は次のとおりです。

2 回目のアップロードでは、新しいアクセス トークンが正常に使用されました。では、再開可能なセッションはしばらくして期限切れになるのでしょうか、それともその特定のアクセス トークンに対してのみ有効なのでしょうか?

0 投票する
1 に答える
1495 参照

java - java youtube API を使用してアップロードを再開する

次のような Java API を使用して YouTube に動画をアップロードしようとしています。

インターネット接続が遅くて不安定なため、再開可能なアップロードを機能させることができれば非常に助かります。ドキュメントhereおよびhereは、「setDirectUploadEnabled(false)」が完全に機能することを示唆しているようです。ええと...明らかにそうではありません。

インターネット接続が中断された場合、IOException がスローされ、アップロードの自動再開はありません。

アップロードを再開するにはどうすればよいですか?

0 投票する
0 に答える
1325 参照

android - Android Google ドライブの再開可能なアップロードが頻繁に失敗する

mp4 ファイルを Google ドライブにアップロードする際に問題があります。再開可能なアップロードを使用しています。チャンク サイズは最小サイズの多重度として設定されます (プログレス バーを機能させるためにアップロードするファイル サイズによって異なります)。小さなファイルのアップロードは、ほぼ常に機能しています。しかし、ファイルが約 50 MB の場合、アップロードは頻繁に失敗します。EOFExceptionアップロードの最初Unexpected end of streamか、アップロードの途中で例外 " "が発生しました。多くのテストの後、動作はランダムで、機能する場合と機能しない場合があります。Eclipse プラグインでダウンロードした最新の Google Drive API を使用しています。AccountPicker" " アクティビティでデフォルト認証を使用しています。Google検索で多くのヒントを見てきましたが、何も問題を解決していません. たとえば、「System.setProperty("http.keepAlive", "false")」を設定します。これは私のアップロード方法です:

EOFException「 」は、主に Google ドライブを長時間使用せずにアップロード リクエストを行った場合に発生することに気付きました。たとえば、フォルダの一覧表示を行ってアップロードを行った直後の場合、「EOFException」は生成されません。クレデンシャル オブジェクトとドライブ サービス オブジェクトを、アクティビティ タイム ライフごとに 1 回だけ作成しています。多分いくつかのリフレッシュが必要ですか?これを手伝っていただけますか?前もって感謝します。