Как загрузить PDF с сервера в виде ASPX-страницы (или безопасной загрузки PDF-файлов)? - PullRequest
2 голосов
/ 20 февраля 2010

У меня есть папка с pdfs, но я не хочу, чтобы они были общедоступными (например, просто наберите www.domain.com/pdfs/doc.pdf).

Мне нужно, чтобы у них были какие-то меры безопасности (например, www.domain.com/loadpdf.asmx?key=23452ADFASD12345 или использование POST)

Как мне это сделать ?, я узнал, как создать PDF, а не как загрузить его с сервера.

спасибо.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2010

Считайте PDF в байтовый массив и используйте его. Как сказал awright18, сделайте это в обработчике (.ashx). Примерно так:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MapHandler : IHttpHandler, IReadOnlySessionState
{

    public void ProcessRequest(HttpContext context) {
        CreateImage(context);
    }

    private void CreateImage(HttpContext context) {

        string documentFullname = // Get full name of the PDF you want to display...

        if (File.Exists(documentFullname)) {

            byte[] buffer;

            using (FileStream fileStream = new FileStream(documentFullname, FileMode.Open, FileAccess.Read, FileShare.Read))
            using (BinaryReader reader = new BinaryReader(fileStream)) {
                buffer = reader.ReadBytes((int)reader.BaseStream.Length);
            }

            context.Response.ContentType = "application/pdf";
            context.Response.AddHeader("Content-Length", buffer.Length.ToString());
            context.Response.BinaryWrite(buffer);
            context.Response.End();

        } else {
            context.Response.Write("Unable to find the document you requested.");
        }
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

Я нашел эту тему здесь, на ТАК полезной, но вышесказанное должно работать для вас.

1 голос
/ 20 февраля 2010

Вам нужно использовать собственный обработчик http для обработки этих запросов. Здесь - статья, которая охватывает ваш точный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...