Vikram Singh Rathaur Ответов: 2

Экспорт в pdf в определенной папке


я экспортирую datatable в pdf. its рабочий файл, но я хочу сохранить этот файл в определенной папке.

Что я уже пробовал:

Response.ContentType = "application/pdf";
           Response.AddHeader("content-disposition", "attachment;filename=E2E_Variance.pdf");
           Response.Cache.SetCacheability(HttpCacheability.NoCache);

           StringWriter stringWriter = new StringWriter();
           HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);

           showleavediv.RenderControl(htmlTextWriter);

           StringReader stringReader = new StringReader(stringWriter.ToString());
           Document Doc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
           HTMLWorker htmlparser = new HTMLWorker(Doc);
           PdfWriter.GetInstance(Doc, Response.OutputStream);

           MemoryStream ms = new MemoryStream();
           PdfWriter.GetInstance(Doc, ms);
           //System.IO.File.WriteAllText(Server.MapPath("~/E2E/Dash_Emailed_Shot/Test.pdf"), stringWriter.ToString());

           Doc.Open();
           htmlparser.Parse(stringReader);
           System.IO.File.WriteAllText(Server.MapPath("~/test/Test.pdf"), stringWriter.ToString());


           Doc.Close();
           Response.Write(Doc);
           Response.End();

2 Ответов

Рейтинг:
1

F-ES Sitecore

Вы не можете сохранять файлы на клиентской машине, все, что вы можете сделать, это записать их в ответ, как вы это делаете, а затем клиент решает, хочет ли он сохранить файл и если да, то где его сохранить.


Рейтинг:
1

Afzaal Ahmad Zeeshan

Как уже упоминалось в решении 1, Вы не можете заставить клиентскую машину что-либо загрузить, и браузер также не позволит вашему приложению это сделать. Однако вместо "application / pdf" вы можете установить тип контента в octet-stream, чтобы принудительно открыть диалог сохранения файла, и он попросит пользователя сохранить файл.

// I used the following code to download the file directly.
// Works with System.Web namespace being called
@{
    var file = Server.MapPath("~/documents/" + fileName);
    Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
    Response.ContentType = "application/octet-stream";
    Response.TransmitFile(file);
}

В приведенном выше методе я просто попытался передать файл вниз по потоку, вы можете передать свой собственный файл, который вы только что сгенерировали, возможно. Хорошим методом было бы на самом деле сохранить файл где-нибудь, а затем использовать это имя файла (возможно, Guid), а затем передать этот файл пользователям.

Помнить: даже с этим методом пользователь-король, у него есть окончательное решение.

HttpResponse.Метод TransmitFile (String) (System. Web)[^]