Как получить абсолютный путь для загрузки файла с другого диска? - PullRequest
0 голосов
/ 02 ноября 2011

Мне нужно дать ссылку на скачивание в PDF-файл, который находится на диске D: *. 1001 *

Мой сайт размещен на диске C: той же системы.

Как я могу датьссылка на скачивание моего pdf-файла на диске D: на моем веб-сайте, размещенном на диске C: *

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

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

Вместо этого я пишу обработчик ASHX («Универсальный обработчик» в Visual Studio), который выбирает и отправляет файл в браузер пользователя.

По сути, вы передаете уникальный идентификатор в обработчик (например, чистое имя файла), а обработчик делает все остальное, чтобы извлечь файл локально и передать его в браузер, как показано в этом псевдокоде:

public class MyHandler :
    IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        var fileName = Request[@"fn"];
        var filePath = Path.Combine(@"C:\My\Fixed\File\Path", fileName );

        Response.ContentType = @"application/pdf";

        Response.AddHeader(
            @"Content-Disposition", 
            @"attachment; filename=" + Path.GetFileName(filePath));
        Response.AddHeader(
            @"Content-Length",
            new FileInfo(filePath).Length );

        Response.WriteFile(filePath);
        Response.End();
    }

    public bool IsReusable
    {
        get { return false; }
    }
}

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

  • Проверка прав доступа, вошел ли пользователь в систему и может ли он загрузить файл.
  • Потоковая передача с разными именами файлов клиенту.
  • Загрузка файла регистрациив базу данных.
  • ...
0 голосов
/ 02 ноября 2011

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

Подробные сведения об использовании mklink, программы, входящей в состав Windows, которая облегчает создание, управление и удаление всех видов ссылок (включая точки соединения), можно найти в центре документации Microsoft TechNet .

Кроме того, вас могут заинтересовать символические ссылки и жесткие ссылки, которые похожи по своей природе (хотя и имеют незначительные различия).

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