2012-04-04 11 views
-1

したがって、vb.netを使用して、ユーザーがダウンロードしたいファイルのバイトデータをサーバーから取得します。私はファイル名と拡張子が何であるかはいつも知っていますが、わからないのはバイトデータのダウンロードを開始する方法と適切なファイル形式です。これをどうやってやりますか?バイト配列のダウンロード方法は?

EDIT:わかりやすくするために、私は既にコードでバイト形式のデータを取得していますが、これも既知の適切なファイルタイプとしてダウンロードするだけです。私はいつも公開されていないようにファイルのURLを常に隠しておきます。

+0

これを試してください(C#、翻訳が簡単です):http://msdn.microsoft.com/en-us/library/ms229711.aspx –

+0

URLが必要なようです。特にバイト形式のデータを取得しているので、ファイルの場所を公開することは決してありません。 – Mitchell

+0

それは明らかではありません...バイトがあれば、何をもっとダウンロードしなければなりませんか?ちょうどそれを保存できませんか? –

答えて

0

さて、私はそれを理解しました。 AddHeaderやContentTypeのような他のレスポンス関数でBinaryWriteを使うと、うまく動作します。 GetMimeTypeは私が作った関数です。以下のコード:

Response.Clear() 
Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName) 
Response.ContentType = GetMimeType(FileName) 
Response.BinaryWrite(data) 
Response.End() 
Response.Flush() 

助けてくれた人に感謝します。

+1

修正のおめでとう!あなたができるときは、他の人があなたの成功から学ぶことができるように、あなたの答えに「受け入れられた」と記入してください。乾杯〜 –

+0

1時間でマークすることができます。 – Mitchell

2

ファイルをハードドライブに直接ダウンロードする場合は、最も簡単な解決策はWebClient.DownloadFileです。 MSDNのページには素晴らしい例があります。あなたの代わりにディスク上のファイルのバイト配列にファイルを入れたい場合は

、代わりにWebClient.DownloadDataを使用します。

Dim myWebClient As New WebClient() 
Dim myByteArray = myWebClient.DownloadData("http://...") 

再び、大きな例では、MSDNのページにあります。

ダウンロード中にプログラムが反応し続けるようにするには、これらのメソッドのthe asynchronous versionsをチェックしてください。


編集:私はまだあなたの状況を理解することに苦労してんだけど、それはあなたはすでにバイト配列を持っているだけでしたいディスクにそれを書き、あなたがFile.WriteAllBytes使用することができます。

File.WriteAllBytes("C:\my\path\myfile.bin", myByteArray) 
+0

バイトデータをユーザのハードディスクにダウンロードしたい。ファイルは、サーバー上のバイト形式で格納されます。私は最初のリンクをチェックして、2番目は私が望むように聞こえません。 – Mitchell

+0

心配しないで!どちらもURLを要求しています。データは隠されているため、ユーザーに表示されるURLは存在しないはずです。 – Mitchell

+0

もし私がファイルの場所を隠していなかったら、それらは良いでしょう。 – Mitchell

関連する問題