Я довольно новичок в Silverlight. Я пытаюсь загрузить файл .pdf (и несколько других форматов) в Silverlight. Пользователь нажимает кнопку, система переходит и получает URI, а затем показывает SaveFileDialog, чтобы получить место для сохранения файла. Вот фрагмент кода:
WebClient wc = new WebClient();
wc.DownloadStringCompleted += (s, e3) =>
{
if (e3.Error == null)
{
try
{
byte[] fileBytes = Encoding.UTF8.GetBytes(e3.Result);
using (Stream fs = (Stream)mySaveFileDialog.OpenFile())
{
fs.Write(fileBytes, 0, fileBytes.Length);
fs.Close();
MessageBox.Show("File successfully saved!");
}
}
catch (Exception ex)
{
MessageBox.Show("Error getting result: " + ex.Message);
}
}
else
{
MessageBox.Show(e3.Error.Message);
};
wc.DownloadStringAsync("myURI", UriKind.RelativeOrAbsolute));
Файл сохраняется нормально, но он примерно в два раза больше оригинала и не читается. e3.Result выглядит нормального размера (5Mb), но я подозреваю, что он содержит много посторонних символов. FileBytes кажется примерно в два раза больше (11 МБ). Я хотел попробовать DownloadDataAsync вместо DownloadStringAsync (надеясь, что это решит любые проблемы с кодировкой), но Silverlight имеет очень урезанную версию System.Net.WebClient и не поддерживает DownloadDataAsync (он не будет компилироваться).
Я вполне уверен, что это проблема с кодировкой, но я не вижу, как ее обойти.