Загрузить большие файлы в .NET

Я провел хорошее исследование, чтобы найти компонент загрузки для .NET, который я могу использовать для загрузки больших файлов, имеет индикатор выполнения и может возобновлять загрузку больших файлов. Я встречал некоторые компоненты, такие как AjaxUploader, SlickUpload и PowUpload, назвать несколько. Каждый из этих вариантов стоит денег, и только PowUpload выполняет возобновляемую загрузку, но делает это с помощью java-апплета. Я готов заплатить за компонент, который хорошо выполняет эти функции, но если бы я мог написать его сам, это было бы лучше всего.

У меня два вопроса:

  1. Можно ли возобновить загрузку файла на клиенте без использования flash / java / Silverlight?
  2. Есть ли у кого-нибудь код или ссылка на статью, в которой объясняется, как написать .NET HTTPHandler, который позволит потоковую загрузку и индикатор выполнения ajax?

Спасибо,
Остин

[Изменить]

Я понял, что мне действительно нужно иметь возможность возобновлять загрузку файлов для моего проекта. Какие-либо предложения по компонентам, которые могут это сделать?


person Austin    schedule 12.11.2008    source источник


Ответы (5)


1) Можно ли возобновить загрузку файла на клиенте без использования flash / java / Silverlight?

Нет. Сам по себе протокол HTTP не поддерживает возобновление частичной загрузки, поэтому даже если вы использовали flash или silverlight, вам все равно нужно было бы использовать что-то еще, например FTP на сервере.
Я "решил" эту проблему В прошлом проблема заключалась в написании пользовательского клиентского приложения на C #, которое разбивало файл на небольшие фрагменты (2 мегабайта), передавало их по отдельности, а затем сервер объединял их все вместе.

2) Есть ли у кого-нибудь код или ссылка на статью, в которой объясняется, как написать .NET HTTPHandler, который позволит потоковую загрузку и индикатор выполнения ajax?

Хотя это не решает проблему «резюме», я использовал SWFUpload на стороне клиента, и это сработало блестяще. Он предоставляет интеллектуальный файловый браузер (где вы можете запрашивать у пользователя только файлы jpeg и т. Д.) И отслеживать прогресс загрузки, и все это без необходимости изменять ваш сервер вообще.

person Orion Edwards    schedule 12.11.2008
comment
Вы могли бы создать Silverlight-клиент, который делает то же самое, что и ваше приложение C #, верно? После того, как пользователь выберет загрузку, разбейте ее и отправьте по отдельности? Так что технически это возможно в Silverilight, не так ли? - person TJB; 23.02.2009
comment
Конечно, ты мог бы это сделать. Самая сложная часть - это не клиентская сторона, а переговоры с сервером, чтобы узнать, сколько 2-мегабайтных блоков было загружено ранее, и отслеживание всего этого. - person Orion Edwards; 24.02.2009
comment
Альтернативой (которая также не решает проблему резюме) является модуль загрузки ASP.NET Даррена Джонсона для IIS. Это позволит загружать с индикатором выполнения без необходимости использования Flash, Java или Silverlight: darrenjohnstone.net/2008/07/15/ - person Cocowalla; 12.10.2009
comment
Сайт Даррена не работает, но вы все еще можете просматривать файловую структуру корня. Кажется, есть пакеты загрузки для элемента управления FileUpload. - person bgmCoder; 01.05.2012

Невозможно возобновить загрузку с использованием стандартного элемента управления вводом файла HTML, потому что весь файл отправляется вместе с HTTP-запросом.

Раньше я использовал NeatUpload, который дает вам индикатор выполнения. Он находится под лицензией LGPL, поэтому вам не нужно платить за него, и это с открытым исходным кодом.

person Kon    schedule 12.11.2008

Больше нечего добавить о проблеме с резюме. Я использовал (и продолжаю использовать) telerik radUpload, и меня это вполне устраивает (его можно использовать даже в режиме среднего доверия, что было для меня очень важно). Единственная проблема, с которой я столкнулся (и которую не смог исправить), - это загрузка файлов размером более 2 ГБ ...

person Community    schedule 13.11.2008
comment
Имеется в виду 2 МБ, а не 2 ГБ? Если да, то это связано с настройкой maxrequestlength в web.config - person Spongeboy; 05.01.2010

SlickUpload довольно надежен, и многие крупные компании используют его из того, что на сайте.

person hunter    schedule 23.02.2009

Вероятно, это слишком поздно для вашего проекта, но POW Upload теперь реализовали автоматическую загрузку возобновления в своей новой версии. Мы собираемся внедрить это на нашем сайте.

person Donal    schedule 18.06.2010