2014-06-16 5 views
-2

Я создаю pdf-файл, используя проточный код. Когда я запускаю свой код, сгенерированный файл PDF хранится в папке «Загрузка». Я хочу изменить этот путь. Я хочу сохранить его в своем решении. Как я могу это сделать?Как сохранить PDF-файл в asp.net?

Вот код:

  Document pdfDoc = new Document(new Rectangle(624f, 568f),0f,0f,0f,0f); 
      try 
      { 
       PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream); 
       pdfDoc.Open(); 
       string imageFilePath = System.Web.HttpContext.Current.Server.MapPath("../images/1.jpg"); 
       iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath); 

       jpg.ScaleToFit(624f, 468f); 
       pdfDoc.Add(jpg); 
       pdfDoc.Close(); 
       Response.ContentType = "application/pdf"; 


       Response.AddHeader("content-disposition", "attachment; filename= " + System.DateTime.Now.ToString("yyyyMMdd_HHmmssff") + ".pdf"); 

       Response.End(); 

      } 
      catch (DocumentException de) 
      { 
       System.Web.HttpContext.Current.Response.Write(de.Message); 
      } 
+1

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

+0

где вы пишете контент? вам не хватает кода. – MethodMan

+2

@AnimeshGhosh: Код на стороне сервера не знает файловой системы клиента. (По многим причинам). Клиент решает, где (или даже * если *) файл сохраняется. – David

ответ

3

Я хочу сохранить указать папку, в сервере, где этот PDF будет сохранить.

Вы не можете. Код на стороне сервера не (и не может) знать что-нибудь о клиентской файловой системе. Это касается целого ряда архитектурных и соображений безопасности.

Пользователь не может изменить этот путь.

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

Так как я могу это сделать?

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

Веб-приложения не могут обращаться к клиентским файловым системам.

1

Я думаю, вы можете использовать следующий метод

HttpContext.Current.Server.MapPath() 

Больше инфор here.

+0

Это совсем не связано с тем, что ОП просит – iamkrillin

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