powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Передача двоичных данных на контроллер в ASP.NET Core и получения из них файла
3 сообщений из 3, страница 1 из 1
Передача двоичных данных на контроллер в ASP.NET Core и получения из них файла
    #39351729
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Из другого приложения передаю зип-файл в виде двоичных данных на контроллер в ASP.NET Core , на маленьких файлах все срабатывает отлично, а если файл побольше, то получается архив битый(хотя его размер соответствует переданному оригиналу а вот содержимое нет), отладчиком все правильно проходит(к-во байтов) , но почему file.Write записывает уже битый архив ? Подскажите как решить данную проблему ?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
using System;
using Microsoft.AspNetCore.Mvc;
using P01.Data;
using System.IO;
using Microsoft.AspNetCore.Hosting;
using System.IO.Compression;

 public class ServiceController : Controller
    {
        private readonly ApplicationDbContext repository;
        private readonly IHostingEnvironment _hostingEnvironment;

        public ServiceController(ApplicationDbContext repo, IHostingEnvironment hostingEnvironment)
        {
            repository = repo;
            _hostingEnvironment = hostingEnvironment;
        }


        [HttpPost]
        public string PostData(string inNameFile, bool detailComm = false)
        {
            string rezult = "";

            string rootPath = _hostingEnvironment.WebRootPath;
            
            int Len = (int)Request.ContentLength;
            byte[] value = new byte[Len];
            Request.Body.Read(value, 0, Len);

            string fileName = rootPath + "\\Temp\\" + inNameFile;
            var file = new FileStream(fileName, FileMode.Create);
            file.Write(value, 0, Len);
            file.Dispose();

            try
            {
                using (ZipArchive za = ZipFile.OpenRead(fileName))
                {
                    string fileTemp = rootPath + "\\Temp\\up\\";
                    DirectoryInfo di = new DirectoryInfo(fileTemp);
                    if (!di.Exists)
                    {
                        di.Create();
                    }
                    else
                    {  //Предварительно зачищаем каталог
                        di.Delete(true);
                        di.Create();
                    }
                    za.ExtractToDirectory(fileTemp);//с запароленными не работает
                    za.Dispose();
                    rezult = "Успешно!";
                }

            }
            catch (Exception ex)
            {
                rezult = "Ошибка!";
            }

            return rezult;
        }

}
...
Рейтинг: 0 / 0
Передача двоичных данных на контроллер в ASP.NET Core и получения из них файла
    #39352590
AspUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долго мучался, нашел решение
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            using (var memoryStream = new MemoryStream())
            {
                Request.Body.CopyTo(memoryStream);
                var value = new byte[Convert.ToInt32(memoryStream.Length)];
                value = memoryStream.ToArray();

                using (var file = new FileStream(fileName, FileMode.Create))
                {
                    for (int i = 0; i < value.Length; i++)
                    {
                        file.WriteByte(value[i]);
                    }
                    file.Dispose();
                }
            }
...
Рейтинг: 0 / 0
Передача двоичных данных на контроллер в ASP.NET Core и получения из них файла
    #39352599
Фотография Смузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем забивать промежуточно память, чтобы потом скинуть всё в файловый поток?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Передача двоичных данных на контроллер в ASP.NET Core и получения из них файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]