C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: 大容量ファイルのHTTPアップロード


(過去ログ 101 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■60112 / inTopicNo.1)  大容量ファイルのHTTPアップロード
  
□投稿者/ ふぁい (1回)-(2011/06/21(Tue) 10:36:21)

分類:[.NET 全般] 

#同じ内容での3回目の投稿です。なぜか投稿しても反映されません。。今度はプレビューなしで投稿してみます。

お世話になります。
表記の件について、ご教授のほどよろしくお願いします。

環境:VisualStudio2008(C#、ASP.NET)、IIS6.0

現在、数GBレベルの大容量ファイルをWEBサーバーへアップロードする仕組みを検討しています。
大容量なのでレジューム機能(一時中断・再開)を実装したいと考えています。

前提条件としては、クライアントがWindowsアプリ(WEBページではなく)であるということ、
プロトコルはHTTP、サーバー上の保存先は仮想ディレクトリ配下ではない、です。

上記の条件だと、まず最初にPOSTが思いつくのですが、POSTだとファイルが全てアップロード
された後でASP.NETページのPage_Loadイベントが発生するようなので(試した結果です)、
レジューム対応の一環として、受信した分までを一旦保存するというようなことはできない
ように感じました。

POSTで可能ならその方法を、他によい方法があればそれを、キーワードだけでも結構ですので
どなたかご教授頂けないでしょうか?
よろしくお願いします。


引用返信 編集キー/
■60115 / inTopicNo.2)  Re[1]: 大容量ファイルのHTTPアップロード
□投稿者/ なちゃ (490回)-(2011/06/21(Tue) 11:48:58)
まっとうなレンジ転送は、レスポンス方向にしか出来なかったと思いますので、プログラムで明示的に分割送信する事になるんじゃないですかね…
そういうやり方なら、ある意味どうとでも実装できますが。

引用返信 編集キー/
■60118 / inTopicNo.3)  Re[2]: 大容量ファイルのHTTPアップロード
□投稿者/ ふぁい (3回)-(2011/06/21(Tue) 13:17:27)
なちゃ様

コメントありがとうございます。

やはりそうですか。。
分割送信で自作するとしますかね。。

ちなみに、サードパーティ製でこのようなライブラリはご存知ないでしょうか?
あればご紹介いただきたいのですが。

存在するなら、多少金払ってでも自作コードを減らして簡単に作りたいなぁと思いまして。。
金額にもよりますが。。

引用返信 編集キー/
■60131 / inTopicNo.4)  Re[3]: 大容量ファイルのHTTPアップロード
□投稿者/ todo (152回)-(2011/06/21(Tue) 15:29:58)
ASP.NET Web Serviceでやるならこんな感じ
http://www.codeproject.com/KB/webservices/WebserviceFileUpload.aspx
引用返信 編集キー/
■60181 / inTopicNo.5)  Re[4]: 大容量ファイルのHTTPアップロード
□投稿者/ ふぁい (4回)-(2011/06/22(Wed) 14:08:29)
todo様

コメントありがとうございます。

Webサービスでバイト配列をちょっとづつ送り込むって感じでしょうか。
確かにもっとも簡単にできて、自由も利きそうですね。

分割POSTも試してみましたが、毎回セッションスタートが呼ばれてしまうので現実的ではなさそうです。。
#やり方が悪いだけかもしれませんが、、

WEBサービスの方向で進めたいと思います。
アドバイスありがとうございました。

引用返信 編集キー/
■60187 / inTopicNo.6)  Re[5]: 大容量ファイルのHTTPアップロード
□投稿者/ なちゃ (491回)-(2011/06/22(Wed) 16:49:08)
セッションが必要なら、クッキーコンテナをクライアント側で設定しておけば、普通にセッションを使えます。
セッションがそもそも不要なら、ページでセッションをオフにしてください。
個人的にはこういう用途には汎用ハンドラをお勧めしますが。

Webサービスでもいいのですが、バイナリデータに単純にSOAPとか使うと、サイズが膨れ上がるのであまりお勧めではありません。

引用返信 編集キー/
■60234 / inTopicNo.7)  Re[6]: 大容量ファイルのHTTPアップロード
□投稿者/ ふぁい (5回)-(2011/06/23(Thu) 12:40:27)
なちゃ様

毎度アドバイスありがとうございます。

汎用ハンドラということですが、.ashxに対して分割POSTを行うという意味で合ってますでしょうか?
#要求ヘッダが送られた時点でProcessRequestイベントが発生するようですが、ボディ部分は結局全データの転送が完了しないと
取得できないようでしたので。。

パフォーマンスを重視するのであれば、こちらのほうが優れているということなのでしょうね。

引用返信 編集キー/
■60235 / inTopicNo.8)  Re[7]: 大容量ファイルのHTTPアップロード
□投稿者/ なちゃ (492回)-(2011/06/23(Thu) 12:58:10)
No60234 (ふぁい さん) に返信
> なちゃ様
>
> 汎用ハンドラということですが、.ashxに対して分割POSTを行うという意味で合ってますでしょうか?

そうです。どっちにしても分割に関する実装は必要です。
ボディの処理をシンプルに実装できて余計な処理をしないのと、転送効率が良いのでお勧めかなということです。

引用返信 編集キー/
■60243 / inTopicNo.9)  Re[8]: 大容量ファイルのHTTPアップロード
□投稿者/ ふぁい (7回)-(2011/06/23(Thu) 19:00:54)
なちゃ様

なるほどです。
両方のパターンでプロトを作ってみて、それぞれの特徴を理解したうえで、どちらを採用するか決めたいと思います。

色々とありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -