2013-03-27 3 views
0

Можно ли сохранить файл документа экспортированного слова с помощью Response.Write(). Теперь он показывает диалоговое окно «Сохранить/Открыть», как только оно успешно конвертируется. Но мне нужно сохранить этот файл в папке. Пожалуйста, помогите мне решить эту проблему.Сохранение экспортированного файла doc на диск

Мое преобразование в Doc-код прилагается ниже.

private void ExportDataSetToWordDoc() 
    { 
     try 
     { 
      Response.ClearContent(); 
      Response.Buffer = true; 
      Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", DateTime.Today.ToShortDateString().Replace("/", "").Replace("-", "") + "_" + DateTime.Now.ToShortDateString() + ".doc")); 
      Response.ContentType = "application/ms-word"; 
      StringWriter sw = new StringWriter(); 
      HtmlTextWriter htw = new HtmlTextWriter(sw); 

      tblMain.RenderControl(htw); 


      Response.Write(sw.ToString()); 
      Response.End(); 
     } 
     catch (ThreadAbortException ex) 
     { 

      Common.LogError(ex); 
     } 

    } 
+0

Вы не можете контролировать, где браузер сохраняет файл. Если бы вы могли, представьте, сколько удовольствия может иметь вредоносное ПО ... –

ответ

1

Я изменил свой код, как показано ниже. Теперь его сохранение указанной папки

Response.ClearContent(); 
      Response.Buffer = true; 
      Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", DateTime.Today.ToShortDateString().Replace("/", "").Replace("-", "") + "_" + DateTime.Now.ToShortDateString() + ".doc")); 
      Response.ContentType = "application/ms-word"; 
      StringWriter sw = new StringWriter(); 
      HtmlTextWriter htw = new HtmlTextWriter(sw); 

      tblMain.RenderControl(htw); 

      string strPath = Request.PhysicalApplicationPath + "Test.doc"; 
      StreamWriter sWriter = new StreamWriter(strPath); 
      sWriter.Write(sw.ToString()); 
      sWriter.Close(); 

Спасибо.

0

Вы можете использовать создатель потока (System.IO.StreamWriter), используя путь. Когда стример будет закрыт, файл будет сохранен по указанному пути.

Но он сохранит на сервере диск. Если вы хотите сохранить на стороне клиента, у вас нет другого выбора, кроме как спросить пользователя о том, где поставить файл. Вы не можете сохранять файлы на клиенте без его одобрения.

var x = new System.IO.StreamWriter(path); 
x.Close(); 
1

Это зависит от браузера, предлагающего пользователю возможность «открыть или сохранить». Это то, что ваш контент-расположение «приложил» поощряет браузер. Другой вариант - размещение контента «inline», где браузер обычно просто вызывает приложение (Word в этом случае), чтобы открыть файл. See MSDN.

К сожалению, браузер не всегда будет указывать имя файла, указанное вами в качестве имени файла по умолчанию в диалоговом окне «Сохранить как». Часто он будет указывать имя вашей веб-страницы по умолчанию. Firefox, по крайней мере, документирует это как ошибку, IE, похоже, считает, что это «функция».

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