Member 11670657 Ответов: 1

Как скачать файлы с сервера


Привет Друзья,
У меня есть большая проблема, и я пытаюсь в течение дня решить ее.
Я хочу вниз загрузить файлы с сервера. Я использовал asp.net решение mvc 4.

Мой код просмотров выглядит следующим образом.

$.ajax({
                url: '@Url.Action("DownloadFile", "Inbox")',
                type: 'POST',
                cache: false,
                data: {
                    filePaths: filePaths
                },
                success: function (result) {
                    stopPreLoader();
                },
                error: function (result) {
                    stopPreLoader();
                }
            });


Здесь filePaths - это список имен файлов. Далее мой контроллер выглядит следующим образом,

[HttpPost]
        public FileResult DownloadFile(string filePaths)
        {
            var pathList = filePaths.Split(',').Where(p => p != "").ToList();
            var path = @"" + pathList[0];
            if (pathList.Count == 1)
            {
                byte[] fileBytes = System.IO.File.ReadAllBytes(path);
                string fileName = "abc.pdf";
                return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Zip, fileName);
            }
            if (pathList.Count > 1)
            {
                var id = Session.SessionID;

                var archive = Server.MapPath("~/archive.zip");
                var temp = Server.MapPath("~/temp");

                // clear any existing archive
                if (System.IO.File.Exists(archive))
                {
                    System.IO.File.Delete(archive);
                }
                // empty the temp folder
                Directory.EnumerateFiles(temp).ToList().ForEach(f => System.IO.File.Delete(f));

                // copy the selected files to the temp folder
                pathList.ForEach(f => System.IO.File.Copy(f, Path.Combine(temp, Path.GetFileName(f))));

                // create a new archive
                ZipFile.CreateFromDirectory(temp, archive);
                
                return File(archive, "application/zip", "archive.zip");
                //return File(archive, MimeMapping.GetMimeMapping(archive));
            }

            return null;
        }


Так что выше archive.zip файл создается на сервере. Но у меня не появляется окно подтверждения загрузки в браузере.

Пожалуйста, помогите мне решить эту проблему.

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

Я искал везде в интернете и пытался в течение дня.

1 Ответов

Рейтинг:
0

F-ES Sitecore

Вы не можете сделать это через ajax, просто используйте обычную форму, которая подчиняется вашему действию DownloadFile, и браузер позаботится обо всем остальном. Вы можете отправить форму с помощью javascript, если не хотите использовать кнопку отправки.