2011-01-20 12 views
0

質問に対する3回目の編集です。元のテキストは明らかに関連性がなくなったので削除しました。大規模(20〜30ギガ)のファイルをクライアントからサーバーにアップロードする最良の方法は何ですか?

大規模なファイルをサーバーにアップロードできるようにするクライアントを作成する必要があります。 AJAXとFlashは、提出する前にファイルをメモリに読み込むことを主張しているようだ。私はあらかじめ構築されたアプレットを見てきましたが、まったく有望なものはありません。

これを行う方法のアドバイスを探しています。問題は、クライアント側とサーバー側の両方にあります。そのようなファイルを収集するためのPHPはおそらく最良のサーバー側のソリューションではありません...その点については、サーバは64ギガビットで4ギガ以上のファイルに対処する必要がありますか?

クライアント側では、ブラウザベースであることをお勧めしますが、プラットフォームアプリケーションとして書く方がいいかもしれないと考えています(もっと面倒ですが)。

本当に、私は比較的信頼できるものであれば何でも構いません。

答えて

1

あなたのニーズを既にサポートしているか、または開始に役立つ可能性のあるFlashアップローダがたくさんあります。これはGoogleにとっては簡単なものです。つまり、複数のGBのファイルをアップロードする場合は、大容量のファイルを大量にアップロードするアップローダを設計することを検討し、ネットワークが切断された場合の復旧を可能にすることが考えられます。1.9GBをアップロードした場合、アップロードに残っている.1GBとの接続を失った!さらに、PHP側では、メモリ単位で管理する方が簡単かもしれない小さなチャンクしか受信できません。すべてのチャンクを受け取ったら、PHP側ですべてのチャンクを結合することができます。

Flashクライアント側とサーバー側は、この種の設計と相互運用する必要があります。私。サーバーはカスタムチャンクプロトコルを理解する必要があります。 Flashクライアントがアップロードしたチャンクを圧縮し、それらのチャンクをサーバー上で解凍するなど、クライアントの帯域幅を節約する方法を検討することができます。

堅牢な「一時停止/継続」ユーザープロセスを作成するために、Flashローカルストレージを検討することができます。たとえば、2GBファイルの1/2GBをアップロードすると、私のパワーは消えます。私がアップロードページに戻って、私が中止した場所でフラッシュを再開することは素晴らしいことです。フラッシュローカルストレージは、それをサポートするための方法かもしれません、http://www.macromedia.com/support/documentation/en/flashplayer/help/help02.html。ローカルストレージを使用して、アップロードしていたユーザーのローカルファイルパスと、最後に正常にアップロードされたチャンクなどを追跡できます。

これを安全な環境に配置する場合は、Flashクライアントの認証をサポートする必要があります。これは、どこに配置するかによって異なります。それはフラッシュのアイデアのために、すべての場合に役立ちます

はちょうど私がチャイムだろうと思って、知ってはいけない。

私は純粋なAJAXのアプローチがシナリオをアップロードマルチGBのために働くだろううまくわかりませんが。

+0

私たちがSilverlightに移行したほとんどのMicrosoftネットワークで動作しているため、その時点でテストしたアップロードオプション(1年前)はISAプロキシをサポートしていなかったため、存在していますが、より小さなinteropです。 –

+0

これはFlashのRTMPプロトコル経由ですか? ISAサーバーは任意のプロトコル/ポートをサポートする必要があります。 Flashが標準HTTP経由で通信していなかった場合、Flashプロトコルを許可するためにファイアウォールの設定変更が行われている可能性があります。 Silverlightソリューションは、Flashソリューションと同じプロトコル/ポートを使用しましたか? –

+0

ありがとうshan。私はあなたの答えをアップアップしていますが、いくつかの選択肢のためにそれを開いたままにします。私は間違いなくこのファイルを分割してファイルに分割したくありません。むしろJavaを使用して、ファイルを1つのものとしてアップロードしたいと思います。このアプレットhttp://www.radinks.com/upload/がそのように見えます。私が見つけたものを報告します。 –

関連する問題