2012-04-04 3 views
-1

Итак, используя vb.net, я извлекаю с моего сервера данные байта для файла, который пользователь хочет загрузить. Я всегда знаю, что такое имя файла и расширение, но я не знаю, как начать загрузку байтовых данных и в соответствующий формат файла. Как мне это сделать?Как загрузить байт-массив?

EDIT: Просто для уточнения, я уже получаю данные в формате байтов в коде, мне просто нужно скачать его как подходящий тип файла, который также известен. Я постоянно держу URL-адрес в файле, поэтому он никогда не отображается.

+0

Попробуйте это (C#, легко перевести): http://msdn.microsoft.com/en-us/library/ms229711.aspx –

+0

Это похоже на URL-адрес. Я никогда не хочу раскрывать расположение файлов, тем более, что я уже получаю данные в байтовом формате. – Mitchell

+0

Непонятно ... если у вас есть байты, то что вам нужно скачать больше? Вы не можете просто сохранить его? –

ответ

0

Хорошо, я понял. Используя BinaryWrite с другими функциями Response, такими как AddHeader и ContentType, я получил его для работы. GetMimeType - это функция, которую я создал. Код ниже:

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

Спасибо тем, кто пытался помочь!

+1

Поздравляем с исправлением! Когда вы в состоянии, пожалуйста, отметьте свой ответ как «принятый», чтобы другие могли учиться на вашем успехе. Cheers ~ –

+0

Будет отмечен за один час. – Mitchell

2

Если вы хотите загрузить файл непосредственно на жесткий диск, самым простым решением является использование WebClient.DownloadFile. Хороший пример - страница MSDN.

Если вы хотите поместить файл в массив байтов вместо файла на диске, используйте WebClient.DownloadData вместо:

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

Опять же, больше примеров можно найти на странице MSDN.

Если вы хотите, чтобы ваша программа оставалась отзывчивой во время загрузки, ознакомьтесь с the asynchronous versions этих методов.


EDIT: Я все еще с трудом понимая вашу ситуацию, но вы уже есть массив байтов и просто хотите записать его на диск, вы можете использовать File.WriteAllBytes:

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

Хотите загрузить данные байта на жесткий диск пользователя. Файл хранится в байтовом формате на сервере. Я проверю, что первая ссылка, вторая не похожа на то, что я хочу. – Mitchell

+0

Nevermind! Оба требуют URL. Данные скрыты, поэтому не должно быть видимого URL-адреса для пользователя. – Mitchell

+0

Если бы я не скрывал расположение файлов, тогда это было бы хорошо. – Mitchell