powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Доколе?? Передача файла в Web API
14 сообщений из 14, страница 1 из 1
Доколе?? Передача файла в Web API
    #39458132
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крик души - почему банальная передача файла с сервера на клиент требует какого низкоуровневого кода размером в простыню??
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458135
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно, не простыню (зависит от подхода).

Но почему надо манипулировать заголовками, создавать какие-то доп. объекты, и без конца копаться в сети.
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458156
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомКрик души - почему банальная передача файла с сервера на клиент требует какого низкоуровневого кода размером в простыню??
Да ладно? Зачем?
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458239
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

..есть же костыль, простой ... создать форму не лету, засунуть в нее параметры, отсубмитить и убить .. зачем все JSON пихать? .. да, не стильно, немодно, не молодежно .. но работает же ..
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458336
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikАгнец за бортом,

..есть же костыль, простой ... создать форму не лету, засунуть в нее параметры, отсубмитить и убить .. зачем все JSON пихать? .. да, не стильно, немодно, не молодежно .. но работает же ..

С клиента на сервер - это пройденный этап, со своими заморочками.

Я говорю про "с сервера на клиент".

Самый короткий код.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   var _bytes = await bm.downloadAsync(id);

            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new ByteArrayContent(_bytes)
            };

            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

            return result;
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458348
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прям пипец простыня ))) Оформи в метод и будет тебе счастье.
Код: c#
1.
2.
3.
var _bytes = await bm.downloadAsync(id);

return TransferFile(_bytes);
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458353
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

... так а это .. FileResult .. ?
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458435
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПрям пипец простыня ))) Оформи в метод и будет тебе счастье.
Код: c#
1.
2.
3.
var _bytes = await bm.downloadAsync(id);

return TransferFile(_bytes);



Это победитель))).

Остальные были пострашнее.
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458437
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotikАгнец за бортом,

... так а это .. FileResult .. ?

Это в MVC.

В WebAPI не так много чего вернуть можно.
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458505
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомcarrotikАгнец за бортом,

... так а это .. FileResult .. ?

Это в MVC.

В WebAPI не так много чего вернуть можно.
Дарю
Код: 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.
    public class FileApiResult : IHttpActionResult
    {
        public string FileName { get; set; }

        public Stream Content { get; set; }

        public string ContentType { get; set; }

        public long? ContentLength { get; set; }

        public string DispositionType { get; set; }

        public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
        {
            var result =
                new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StreamContent(Content)
                };

            result.Content.Headers.ContentDisposition =
                new ContentDispositionHeaderValue(DispositionType ?? DispositionTypeNames.Attachment)
                {
                    FileNameStar = FileName
                };

            result.Content.Headers.ContentType =
                new MediaTypeHeaderValue(ContentType ?? MediaTypeNames.Application.Octet);

            if (ContentLength.HasValue)
                result.Content.Headers.ContentLength = ContentLength;

            return Task.FromResult(result);
        }
    }

...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458637
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомЭто в MVC.

В WebAPI не так много чего вернуть можно.

.. не понял .. в WebAPI - это где? ... вот кусок реального кода из рабочего контроллера WebAPI под .Net Core
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
[HttpPost]
        public FileResult GetPDF(FileParams fileparams)
        {
            // тут в MemoryStream пдф-ка создается ... 
            byte[] fileBytes = mstream.ToArray();
            string fileName = "bankRTR" + randomnumber + ".pdf";
            return File(fileBytes, "application/octet-stream", fileName);
        }
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39458647
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik.. не понял .. в WebAPI - это где? ... вот кусок реального кода из рабочего контроллера WebAPI под .Net Core MVC5 и WebAPI2 разделены.
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39459154
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КАгнец за бортомпропущено...


Это в MVC.

В WebAPI не так много чего вернуть можно.
Дарю
Код: 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.
    public class FileApiResult : IHttpActionResult
    {
        public string FileName { get; set; }

        public Stream Content { get; set; }

        public string ContentType { get; set; }

        public long? ContentLength { get; set; }

        public string DispositionType { get; set; }

        public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
        {
            var result =
                new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StreamContent(Content)
                };

            result.Content.Headers.ContentDisposition =
                new ContentDispositionHeaderValue(DispositionType ?? DispositionTypeNames.Attachment)
                {
                    FileNameStar = FileName
                };

            result.Content.Headers.ContentType =
                new MediaTypeHeaderValue(ContentType ?? MediaTypeNames.Application.Octet);

            if (ContentLength.HasValue)
                result.Content.Headers.ContentLength = ContentLength;

            return Task.FromResult(result);
        }
    }



И это не простыня кода?? ))
...
Рейтинг: 0 / 0
Доколе?? Передача файла в Web API
    #39459159
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чёт не понял. Файл он уже есть, или в процесе создания передаётся? В первом случае - вообще серверу делать нечего. А во втором случае, ну да, три строчки добавить нужно на выхлоп.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Доколе?? Передача файла в Web API
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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