2011-01-10 4 views
0

Я создаю сайт (asp.net), который позволяет пользователям загружать на сервер некоторые файлы (только зарегистрированные пользователи могут загружать). Все файлы, загруженные определенным пользователем, хранятся в одной папке на сервере. Теперь веб-сайт также будет иметь возможность поиска. любой, кто просматривает веб-сайт, может видеть, что все файлы загружаются пользователем «x» и выбирают для их загрузки. Допустим, пользователь «X» загрузил 100 файлов.Загрузите всю папку с сервера

На стороне сервера у меня есть код, который будет извлекать все 100 файлов и передавать файлы один за другим в цикле для пользователя. У меня есть: Response.AddHeader("content-disposition", "attachment; filename=" + file.Name) , который будет запрашивать у пользователя местоположение для сохранения файла на своем диске. Для 100 файлов пользователю будет предложено 100 раз.

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

Можно ли сделать что-то подобное?

ответ

1

Не можете ли вы сделать почтовый файл?

Использование, например, DotNetZip?

+0

Для того, чтобы размер файла размером 20 файлов занимал некоторое время, если размер файла большой. Кроме того, мне, возможно, придется хранить их на диске, если я не могу занести их в память. – Maggie

+0

С DotNetZip вы можете использовать zip для потока. С моей точки зрения, без ziping, у вас не может быть ни одного файла. Веб-браузер не будет загружать несколько файлов «одним» (это может быть недостаток безопасности). – kerrubin

1

Есть? Вы можете использовать csharpziplib для копирования ваших файлов. , а затем предоставить одну ссылку пользователю.

В случае размер или количество файлов, занимающих много времени, вы должны подумать об альтернативах, таких как:

  1. графику запрос на загрузку и написать службы Windows для архивирования.
  2. Ломать ваши полные файлы в нескольких файлах почтового индекса на основе счетчика размера.
+0

Не могли бы вы подробнее рассказать об альтернативе 1: Расписание загрузки запроса выполнить службу Windows? Я не понимал, что. Спасибо – Maggie

+0

Мэгги, вы сказали: «Zipping 100 файлов займет некоторое время, если размер файла большой. Кроме того, мне, возможно, придется хранить их на диске, если я не могу занести в память». Поэтому я хочу сказать вам, что если ваш пользователь может отправить запрос на загрузку. запрос будет прочитан службой Windows (запланированная служба для ping для запросов в очереди), и там вы будете писать код для упаковки вещей и обновлять статус очереди. Я реализовал это решение для банковского решения, где клиент запрашивает подробные trasactions в формате pdf/xls. –

+0

В будущих ответах вы можете спокойно опустить приветствие. –

0

Включить загрузку текстового файла с загрузки URL-адресов в нем, так что-то вроде wget (Windows version) можно использовать? (Или другой загрузчик, который может взять список файлов для загрузки.)

Смежные вопросы