32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
1

Скачивание Excel файла с диска сервера

26.12.2016, 12:05. Показов 2406. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.

Сам удивляюсь, но не могу скачать файл с сервера. Подскажите, пожалуйста, кто проделывал это на MVC? Гугл уже кончился..
Желательно методом контроллера, без привлечения Ajax и пр.

Пробовал несколькими способами
C#
1
2
3
4
public FileResult Download()
        {
            return new FilePathResult(@"C:\temp\BLP.xlsx", "application/vnd.ms-excel");
        }
C#
1
2
3
4
public FileResult Download()
        {
            return new FilePathResult(@"C:\temp\BLP.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        }
C#
1
2
3
4
5
public FileResult Download()
        {
            byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\temp\BLP.xlsx");
            return File(fileBytes, "application/vnd.ms-excel", "BLP.xlsx");
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2016, 12:05
Ответы с готовыми решениями:

Скачивание файла с Яндекс Диска
Здравствуйте. Сегодня мне нужно было сделать так, что бы код смог скачать файл с Я.Диска. "В чем...

Скачивание файла из Яндекс.Диска
Сама суть вот в чем, мне нужно оформить скачивание из интернета. А именно: Сделать ProgressBar,...

Скачивание файла с Яндекс диска
Как программно скачать файл с Яндекс диска или ргхоста

Скачивание файла с Яндекс.Диска
Здравствуйте. Помогите пожалуйста программно скачать файлы с яндекс диска. Я что-то не понимаю, как...

10
Администратор
Эксперт .NET
17205 / 13528 / 5254
Регистрация: 17.03.2014
Сообщений: 27,687
Записей в блоге: 1
26.12.2016, 12:19 2
SPNick, третий способ должен сработать при условии наличия прав на чтение у учетной записи пула приложения.
1
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
26.12.2016, 12:26  [ТС] 3
OwenGlendower, приветствую.

Имперсонацию забыл прикрутить, точно.
Но правка не помогла, не выходит файл с предложеним скачивания..
0
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
26.12.2016, 12:34  [ТС] 4
Некоторые способы отдают на страничку такой вывод (вместо файла).
Скачивание Excel файла с диска сервера
0
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
26.12.2016, 13:34  [ТС] 5
Может быть проблема в том, что мой ActionResult, внутри которого я вызываю сохранение файла, возвращает частичное представление?.. Хотя как это может помешать не знаю.. Обращение ведь к методу внешнего объекта другого класса..

C#
1
2
3
4
5
6
7
    ...
    var generateClass = new GenerateExcel(); // создаю объект
    generateClass.Generate(reports); // генерирую файл Excel и сохраняю его на диск
    Download(); // скачиваю файл
 
    return PartialView("_PartialReport", reports); // конечное возвращение представления на страницу
}
C#
1
2
3
4
5
6
7
8
public FileResult Download()
{
    using (HostingEnvironment.Impersonate())
    {
        byte[] fileBytes = System.IO.File.ReadAllBytes(@"C:\temp\BLP.xlsx");
        return File(fileBytes, "application/vnd.ms-excel", "BLP.xlsx");
    }
}
0
2745 / 2051 / 380
Регистрация: 22.07.2011
Сообщений: 7,760
26.12.2016, 16:59 6
Что бы браузер закачал файл - ему нужно сделать запрос по определенному адресу , в ответе на который будут данные файла и определенные заголовки указывающие на тип содержимого - исходя из которого , он либо загрузит его во временную папку , либо отобразит сразу. А у вас что получается ? - результат функции Download никак не обрабатывается , а в ответе на запрос уходит просто кусок html-я.
0
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
26.12.2016, 17:18  [ТС] 7
sau, уже понял, да.
Пробую добавить ajax в ветку .done основного запроса, чтобы в случае успешной генерации летел второй запрос на скачивание. Впрочем, пока что безуспешно.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$.ajax({
    url: '/Reports/ConstructReport',
    type: "POST",
    contentType: 'application/json; charset=utf-8',
    cache: false,
    data: '{"..params_here.."}'
})
.done(function (data) {
    $('#Report').html(data);
 
    // Download report action
    DownloadReport();
 
})
.fail(function (xhr) {
    alert('ОШИБКА');
});
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function DownloadReport() {
    $.ajax({
        url: '/Reports/Download',
        type: "POST",
        contentType: 'application/json; charset=utf-8',
        cache: false
    })
 
    .done(function (data) {
        // Тут как-то нужно указать на файл, если я правильно понял.
        // через метод действия (Download()) файл не подбирается
    })
 
    .fail(function (xhr) {
        alert('ОШИБКА');
    });
}
C#
1
2
3
4
5
6
7
8
9
10
// Download Excel report action
public FileContentResult Download()
{
    using (HostingEnvironment.Impersonate())
    {
        byte[] doc = System.IO.File.ReadAllBytes(@"C:\temp\BLP.xlsx");
        // в бит-массив doc файл заходит, порядок
        return File(doc, "application/vnd.ms-excel", "BLP.xlsx");
    }
}
0
2745 / 2051 / 380
Регистрация: 22.07.2011
Сообщений: 7,760
26.12.2016, 17:32 8
ajax то зачем , вы же не часть страницы обновлять собираетесь , просто открываете новую вкладку браузера с адресом на файл или экшен контролера который его вернет.
0
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
26.12.2016, 17:35  [ТС] 9
sau, похоже я что-то пропустил. Можно еще как-то стучать по экшену, кроме Ajax'а?
Мне нужно, чтобы оно "автоматом" после генерации происходило, поэтому кроме Аякса ничего в голову не пришло
0
2745 / 2051 / 380
Регистрация: 22.07.2011
Сообщений: 7,760
26.12.2016, 18:05 10
Лучший ответ Сообщение было отмечено SPNick как решение

Решение

document.location.href = "/controller/action"
или
window.open("/controller/action")
1
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 300
26.12.2016, 18:13  [ТС] 11
sau, благодарю, Мастер. Вы сделали мой декабрь
0
26.12.2016, 18:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2016, 18:13
Помогаю со студенческими работами здесь

Скачивание файла с сервера
Как скачать файл с сервера с помощью PHP?

Скачивание файла с сервера
Здравствуйте, уважаемые. Очень нужна ваша подсказка либо помощь. Необходимо, чтобы при обращении к...

Скачивание файла с сервера
Здравствуйте! Есть такой код. Тут при нажатии на кнопку происходит скачивание файла с сервера и...

Скачивание файла с сервера
Здравствуйте , пишу сайт и возникла потребность в том чтобы пользователь скачал файл с сервера на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru