0

次のような機能が欲しい

2 人のユーザーがいてAB どちらも同じページにアクセスしています
。このページにはボタン (ファイルの送信) があります。
ボタンAをクリックすると、 Open Dialogボックスが表示されます ボックスからファイルを選択する
と、ファイル名を含む のページ にリンクが表示されます リンクをクリックすると、ダイアログが表示され、名前とパスを指定した後にファイルのダウンロードが開始されます。このコンテキストでのあらゆる種類のヘルプをいただければ幸いです。AOpen DialogB
BSaveAs

4

2 に答える 2

1

ページを 2 つに分割することもできます。1 つはファイル アップロード コントロールを備え、もう 1 つは AJAX を介して 3 ~ 4 秒ごとにポーリングし、新しいファイルがあるかどうかを確認します。

サイド "A" には、標準のファイル アップロード コントロールがあり、アップロードされたファイルを保存する標準の .NET 方法を使用します (FileUpload.PostedFile.SaveAs(path)、簡単なものを参照)。ファイルのアップロードが完了したら、このページを更新してください。

サイド「B」は、AJAX 呼び出し、XML、JSON、または単純なテキストからコンテンツを取得する div です。「link.aspx」という AJAX ページを用意して、コンテンツを好きな形式で表示します。

リンクについては、「ダウンロード」ウィンドウを強制する場合は、ファイルがブラウザで通常表示されないタイプである必要があるか、別の aspx ページを使用してファイルを提供し、強制的にダウンロードする必要があります。保存または開くためのダイアログ。

そのaspxページは「file.aspx」のような名前になり、クエリ文字列パラメーター(「id」など)を渡して、必要なファイルを伝えることができます。このページの背後にあるコードは、そのクエリ文字列パラメーターから必要なファイルを特定し、ファイルを提供します。

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.fileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "image/jpeg"; // you gotta figure out the content type of the file here though. This is just the one for JPEGS.

byte[] buffer = new byte[file.Length];
dl.Read(buffer, 0, (int)file.Length);

Response.BinaryWrite(buffer);
Response.End();
于 2011-05-16T13:13:00.367 に答える
1

開いているダイアログは、html 入力で達成されます。<input type="file">

[名前を付けて保存] ダイアログは、html アンカーで達成されます。<a href="www.myserver.com/download.aspx?filename='the file'">

ユーザー A がファイルを選択したら、AJAX またはフォーム onsubmit を使用して、作成した upload.aspx ページからファイルをアップロードします。

ユーザー B のマシンで、AJAX を使用して、利用可能なファイルのリストを返す updatefilelist.aspx ページを呼び出します。ユーザー A の新しいファイルがアップロードされてサーバーに保存されると、ユーザー B の updatefilelist.aspx への AJAX 呼び出しからの次の ping によって、画面に表示されるリストが更新され、新しいファイルが含まれます。

ファイルをクリックすると、目的のファイル名で download.aspx ページが呼び出されます - ここで設定する必要がResponse.ContentTypeありResponse.AddHeader("Content-Disposition", "attachment:filename=""" & IO.Path.GetFileName(Request.QueryString("filename")) & """")ます。名前を付けて保存ダイアログが自動的にポップアップします。

于 2011-05-16T13:21:57.490 に答える