2017-02-06 9 views
0

Как скачать файл через веб-сервис?Как скачать файл через веб-сервис?

Я пробовал это, но он применил эту ошибку.

Сервер не может добавлять заголовки после отправки заголовков http.

public static void StartDownload(string path, string attachmentName) 
{ 
    try 
    { 
     string serverPath = HostingEnvironment.MapPath(path); 
     WebClient req = new WebClient(); 
     HttpResponse response = HttpContext.Current.Response; 
     response.Clear(); 
     response.ClearContent(); 
     response.ClearHeaders(); 
     response.Buffer = true; 
     response.AddHeader("Content-Type", "application/octet-stream"); 
     response.AddHeader("Content-Disposition", "attachment;filename=\"" + attachmentName + "\""); 

     byte[] data = req.DownloadData(serverPath); 
     response.BinaryWrite(data); 
     //response.End(); 
     HttpContext.Current.ApplicationInstance.CompleteRequest(); 
    } 
    catch (Exception ex) 
    { 

     throw ex; 
    } 
} 

ответ

0

Чтобы скачать файл Синхронно:

WebClient webClient = new WebClient(); 
webClient.DownloadFile("example.com/myfile.txt", @"c:\myfile.txt"); 

Чтобы скачать файл Асинхронный:

private void btnDownload_Click(object sender, EventArgs e) 
{ 
    WebClient webClient = new WebClient(); 
    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
    webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
    webClient.DownloadFileAsync(new Uri("example.com/myfile.txt"), @"c:\myfile.txt"); 
} 

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
{ 
    progressBar.Value = e.ProgressPercentage; 
} 

private void Completed(object sender, AsyncCompletedEventArgs e) 
{ 
    MessageBox.Show("Download completed!"); 
} 
+0

благодарственные решение работал. –