从url下载.xls文件

我试图从url下载一个xls文件: http : //www.site.com/ff/excel/file.aspx? deven =0

我正在使用此代码,但下载完成后,文件没有正确下载。 我怎样才能正确地下载这个文件?

string remoteFilename="http://www.site.com/ff/excel/file.aspx?deven=0"; string localFilename = "D:\\1\\1.xls"; Stream remoteStream = null; Stream localStream = null; WebResponse response = null; try { // Create a request for the specified remote file name WebRequest request = WebRequest.Create(remoteFilename); if (request != null) { // Send the request to the server and retrieve the // WebResponse object response = request.GetResponse(); response.ContentType = "application/vnd.ms-excel"; if (response != null) { // Once the WebResponse object has been retrieved, // get the stream object associated with the response's data remoteStream = response.GetResponseStream(); // Create the local file localStream = File.Create(localFilename); // Allocate a 1k buffer byte[] buffer = new byte[1024]; int bytesRead; // Simple do/while loop to read from stream until // no bytes are returned do { // Read data (up to 1k) from the stream bytesRead = remoteStream.Read(buffer, 0, buffer.Length); // Write the data to the local file localStream.Write(buffer, 0, bytesRead); // Increment total bytes processed } while (bytesRead > 0); } } } catch (Exception e) { MessageBox.Show(e.Message); } finally { // Close the response and streams objects here // to make sure they're closed even if an exception // is thrown at some point if (response != null) response.Close(); if (remoteStream != null) remoteStream.Close(); if (localStream != null) localStream.Close(); } MessageBox.Show("file downl"); 

使用WebClient ,它更简单:

 using (WebClient webClient = new WebClient()) { webClient.DownloadFile(remoteFileName, localFilename); } if(File.Exists(localFilename)) MessageBox.Show("File Downloaded"); 

尝试使用localStream.Flush()localStream.Flush()之后进行刷新,您可能还想using语句进行换行。

例如:

 // Create the local file using (localStream = File.Create(localFilename)) { // Allocate a 1k buffer byte[] buffer = new byte[1024]; int bytesRead; // Simple do/while loop to read from stream until // no bytes are returned do { // Read data (up to 1k) from the stream bytesRead = remoteStream.Read(buffer, 0, buffer.Length); // Write the data to the local file localStream.Write(buffer, 0, bytesRead); // Increment total bytes processed } while (bytesRead > 0); localStream.Flush(); } 

这是我如何使用FilePathResult下载Excel文件。

 public FilePathResult DownloadFile(int ID) { var log = _db.Logs.FirstOrDefault(x => x.LogID == ID); //Download the spreadsheet string fileName = string.Format("{0}.xlsx", ID); string path = _directory + "\\" + fileName; return File(path, "application/vnd.ms-excel", string.Format("{0}.xlsx", log.ReportTitle)); }