2015-01-21 3 views
2

У меня есть приложение ASP.NET, которое позволяет пользователю автоматически скачивать файл на стороне клиента, но после того, как файл загрузит мой код, который должен быть выполненный после загрузки файла, не работает, моя страница перестает работать и остается остановленной, пока я не обновляю страницу. Мой кодКод, который должен быть выполнен после загрузки файла, не работает в Asp.net

  cloudBarcodeService.generateFile_Barcode(barcodeList).WriteTo(writer); 
      writer.Flush(); 
      Response.Clear(); 
      byte[] byteArray = stream.ToArray(); 
      Response.AppendHeader("Content-Disposition", "filename=barcode.xml"); 
      Response.AppendHeader("Content-Length", byteArray.Length.ToString()); 
      Response.ContentType = "application/octet-stream"; 
      Response.BinaryWrite(byteArray); 
      writer.Close(); 

      //following text doesn't update 
      lblSucess.text="Successfully Downloaded"; 
+0

Вы обслуживаете файл через обработчик? Я бы просто сделал ручную обратную передачу, если загрузка файла находится в коде – qamar

ответ

1

При отправке файла клиенту таким образом, вы указываете заголовок, тип контента, и все, чтобы загрузить данные в виде файла, а не то, которое будет отображаться на странице , Когда загрузка будет завершена, это будет сделано, и соединение будет закрыто - вы не сможете ничего сделать с ним, прежде чем клиент начнет какое-то новое действие.

Что бы вы могли сделать, это инициировать перенаправление (examples in a different SO question), прежде чем вы начнете загрузку - это может сработать, и вы сможете перенаправить на исходную страницу через несколько секунд после начала загрузки. Там вы можете принять параметр или что-то, чтобы указать, что должно отображаться сообщение «успешно загружено».

С другой стороны, вы уверены, что хотите сделать ? После начала загрузки клиент (который, предположительно, может быть одним из большого числа различных браузеров), как правило, позволяет пользователю узнать, как идет загрузка, и когда он завершается. На стороне сервера вы, вероятно, даже не знаете, как это заканчивается - все, что сервер знает, это то, что оно было отправлено.

0

Спасибо всем за вашу помощь моя проблема решена с помощью ниже кода в ASPX странице

<asp:PlaceHolder ID="PlaceIframe" runat="server" Visible="false"> 
<iframe src="<%=DownloadUrl %>" style="width:1px; height:1px; display:none;"></iframe> 
</asp:PlaceHolder> 

путем присвоения URL для DownloadUrl из кода позади.

Смежные вопросы