Christopher Fernandes Ответов: 1

Asp.net загрузка файла веб-службы


В настоящее время я использую ASP.net веб-сервис для создания и передачи PDF-файла на клиентский компьютер.

Однако что странно, так это то, что вместо сохранения файла в папку загрузки компьютера пользователя веб-служба сохраняет файл в папку IIS Server DefaultAppPool\Download, в которой ASP.net веб-приложение размещено на.

Это моя текущая папка, которая генерирует пути к папкам

string status = "";
string filename = "File_"
string sourcepath = "";
string destinationpath = "";
string baseUrl = "http://serverPath/MyApp/";

filename = filename + "_" + DateTime.Now.ToLongTimeString().Replace(":", "-").Replace(".", "-") + ".pdf";
sourcepath = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["_baseTempPDFPath"] + filename);
destinationpath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Downloads\\" + filename;
string DocContent = "";


Эта нижеприведенная строка кода генерирует неправильный путь, который не предназначен мной.
destinationpath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\Downloads\\" + filename;

Чего я хочу, так это C:\Users\ProfileName\Downloads\
Я хочу сохранить динамически сгенерированный PDF-файл по этому пути.

Или есть способ загрузить PDF файл на компьютер пользователя

Я попробовал этот код и он не работает

HttpContext.Current.Response.BinaryWrite(outPdfBuffer);
HttpContext.Current.Response.End();
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();


Любое решение

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

Я вставил код выше, который я в настоящее время использую в веб-сервисе. Я использую EVOPDF для создания PDF-файла.

1 Ответов

Рейтинг:
6

F-ES Sitecore

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

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


Christopher Fernandes

Как затем предложить пользователю сохранить или открыть файл?

F-ES Sitecore

Когда вы отправляете файл клиенту, используйте "application/octet-stream" в качестве типа файла, и это заставит браузер запросить сохранение или открытие

http://stackoverflow.com/questions/5596747/download-stream-file-from-url-asp-net (речь идет не о вашей проблеме, но она показывает код для загрузки в виде октет-потока)