He llegado a poner un archivo en una secuencia desde una url. Sin embargo, puttin savefiledialog dentro del evento OpenReadCompleted da una excepción porque el savefiledialog necesita ser disparado desde un evento iniciado por el usuario. Poner el savefiledialog NO dentro de OpenReadCompleted da un error porque el conjunto de bytes está vacío, aún no procesado. ¿Hay alguna otra manera de guardar un archivo para transmitir desde una uri sin usar un evento?descargue el archivo de uri absoluto para transmitir a SaveFileDialog
public void SaveAs()
{
WebClient webClient = new WebClient(); //Provides common methods for sending data to and receiving data from a resource identified by a URI.
webClient.OpenReadCompleted += (s, e) =>
{
Stream stream = e.Result; //put the data in a stream
MemoryStream ms = new MemoryStream();
stream.CopyTo(ms);
bytes = ms.ToArray();
}; //Occurs when an asynchronous resource-read operation is completed.
webClient.OpenReadAsync(new Uri("http://testurl/test.docx"), UriKind.Absolute); //Returns the data from a resource asynchronously, without blocking the calling thread.
try
{
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "All Files|*.*";
//Show the dialog
bool? dialogResult = dialog.ShowDialog();
if (dialogResult != true) return;
//Get the file stream
using (Stream fs = (Stream)dialog.OpenFile())
{
fs.Write(bytes, 0, bytes.Length);
fs.Close();
//File successfully saved
}
}
catch (Exception ex)
{
//inspect ex.Message
MessageBox.Show(ex.ToString());
}
}
¡Funciona perfectamente! ¿Por qué no pensé en eso? Probablemente porque soy un novato. Muchas gracias. – tutu