Вызов папки общего диска с помощью javascript

У меня есть два сервера: A и B. Мое классическое приложение ASP развернуто на сервере A. Сервер B содержит папку (ScannedDocuments). Я создал общий диск на сервере А, чтобы указать на эту папку. Общий диск называется Q:.

В IE 7, когда я пытаюсь получить доступ к файлу с помощью javascript, я использую:

window.open(file://Q:/a.txt)

Он открывает файл. Но в IE 8 и выше и во всех версиях Firefox он не открывается. Ни ошибки не выдает, ни файл не открывается.

Я предполагаю, что он блокируется функциями безопасности браузера.

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

Есть ли другой способ открыть удаленный файл с помощью javascript или IIS?

** Отредактировано ** Я попытался создать виртуальный каталог в IIS и указать на общий диск. Но выдает ошибку: ресурс или каталог не найден.

Я использую ИИС 7


person RKh    schedule 02.07.2015    source источник
comment
Общий доступ к файлу с помощью веб-сервера Общий доступ к файлу через сеть не является хорошей идеей.   -  person Anant Dabhi    schedule 02.07.2015
comment
@AnantDabhi Вы имеете в виду IIS? Какие шаги мне нужно выполнить? Я использую IIS 7. Я попытался создать виртуальный каталог в IIS и указать его на общий диск. Когда я использую: window.open(ip address/Q/a.txt, он дает ресурс, который не найден.   -  person RKh    schedule 02.07.2015
comment
да, вы идете правильным путем. Проверьте этот URL-адрес jamfnation.jamfsoftware.com/article.html ?id=309 это может быть вам полезно   -  person Anant Dabhi    schedule 02.07.2015
comment
@AnantDabhi Спасибо. Я постараюсь вернуться к вам.   -  person RKh    schedule 02.07.2015


Ответы (1)


@Anant Dabhi прав - создайте простой вызов Ajax для сервера и верните содержимое файла.

Клиент (JS). Используйте его вместо window.open(file://Q:/a.txt)

function getFile(filename) {
    $.ajax({
        url: "/YourWeb/File/Get",
        data: {
            filename: filename
        },
        success: function (data) {
            console.log(data);
        }
    });
}

Ваш "бэкенд". Предположим, что вы используете .NET :)

public ActionResult Get()
{
    string pathToFolder = "x:\\yyy\\zzz";
    // Strip any directories and leave only name of file. Exception is possible ;)
    string filename = Path.GetFileName(Request["filename"]);
    byte[] ba = File.ReadAllBytes(Path.Combine(pathToFolder, filename));
    string s = Encoding.UTF8.GetString(ba);

    // Return as text (if you are absolutetlly sure it is text!)
    return Content(s);
    // Or pack it in JSON object to have status
    return Json(new { Status = true, Data = s });
}

Вы можете подключиться к UNC, если хотите https://msdn.microsoft.com/en-us/library/windows/desktop/aa385482%28v=vs.85%29.aspx

person Aleksej Vasinov    schedule 02.07.2015
comment
Это классическое приложение ASP. - person RKh; 02.07.2015
comment
Я думаю, можно использовать этот код в ASP.NET. Но вам нужно вернуть объект JSON, используя new JavaScriptSerializer().Serialize(new { Status = true, Data = s }); - person Aleksej Vasinov; 02.07.2015