Я пытаюсь загрузить файл или поток данных на наш веб-сервер и не могу найти достойный способ сделать это. Я пробовал и WebClient
, и WebRequest
, у обоих есть свои проблемы.
WebClient
Красиво и просто, но вы не получаете никаких уведомлений о завершении асинхронной загрузки и о том, что событие UploadProgressChanged
не вызывается с какой-либо полезной информацией. Альтернативой является преобразование ваших двоичных данных в строку и использование UploadStringASync
, потому что тогда, по крайней мере, вы получите UploadStringCompleted
, проблема в том, что вам нужно много оперативной памяти для больших файлов, поскольку он кодирует все данные и загружает их за один раз.
HttpWebRequest
Немного сложнее, но все же выполняет то, что необходимо. У меня возникает проблема в том, что, хотя он вызывается в фоновом потоке (предположительно), он все еще блокирует мой пользовательский интерфейс и весь браузер, пока загрузка не будет завершена, что кажется неправильным.
Обычный .net имеет несколько подходящих WebClient
методов для OnUploadDataCompleted и прогресс, но их нет в Silverlight .net ... я думаю, большое упущение!
Есть ли у кого-нибудь какие-либо решения, мне нужно загрузить несколько двоичных файлов, желательно с прогрессом, но мне нужно выполнить некоторые действия, когда файлы завершили свою загрузку.
Надеюсь на помощь с этим.