powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Net Core 2.2 и multipart запрос
9 сообщений из 9, страница 1 из 1
Net Core 2.2 и multipart запрос
    #40004500
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги!
Не могу найти решение проблемы - может кто знает как.

Мобильное приложение должно слать мне на бек текст письма и фото (multipart).
Не могу найти как мне обработать такой запрос на беке.
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004604
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
принимаешь на входе экшона дто с текстовым полем и IFormFile полем. все
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004664
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
handmadeFromRu
принимаешь на входе экшона дто с текстовым полем и IFormFile полем. все

а можно маленький пример?
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004686
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser
handmadeFromRu
принимаешь на входе экшона дто с текстовым полем и IFormFile полем. все

а можно маленький пример?

в гугле upload file asp core net
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004689
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu
в гугле upload file asp core net
причем первая же ссылка наверняка будет на документацию по asp net core
Да кто ж её читает....
Вот недавно одному давал ссылку, отказался читать, слишком много текста, говорит
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004700
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
читал.... в том то и дело, что не выходит.
пытаюсь заполнить параметры через sswagger:
- файл загружается
- текст сообщения - null
- токен - null

что я не так делаю??
приложу код.


Код: 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.
       
 public class SwaggerFileOperationFilter : IOperationFilter
    {
        public void Apply(Operation operation, OperationFilterContext context)
        {
            if (operation.OperationId == "MailWithPhotos")
            {
                operation.Parameters = new List<IParameter>
                {
                    new NonBodyParameter
                    {
                        Name = "awr_file",
                        Required = false,
                        Type = "file",
                        In = "formData"
                    },
                    new  NonBodyParameter
                    {
                        Name = "awr_msg",
                        Required = true,
                        Type = "string",
                        In = "formData"
                    },
                    new  NonBodyParameter
                    {
                        Type = "string",
                        In = "header",
                        Name = "Authorization",
                        Description = "token",
                        Required = true

                    }
                };
            }
        }
    }


        [HttpPost]
        [ProducesResponseType(typeof(ResponseMail), 200)]
        public async Task<PipeResponse> MailWithPhotos([FromForm] MailwithPhoto fIleUploadAPI)
        {

            var file = fIleUploadAPI.awr_file; // OK!!!
            var message = fIleUploadAPI.awr_message; // <= null ????
            var tokenA = fIleUploadAPI.Authorization; // <= null  ????

            var fileContentStream11 = new MemoryStream();

            await fIleUploadAPI.awr_file.CopyToAsync(fileContentStream11);
            await System.IO.File.WriteAllBytesAsync(Path.Combine(folderPath, 
                                            fIleUploadAPI.awr_file.FileName), 
                                            fileContentStream11.ToArray());
        }

        public class MailwithPhoto
        {
            public string awr_message { get; set; } 
            public string Authorization { get; set; }
            public IFormFile awr_file { get; set; }
        }



...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004704
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел проблему

Вот так нуно в коде писать

Код: 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.
    public class SwaggerFileOperationFilter : IOperationFilter
    {
        public void Apply(Operation operation, OperationFilterContext context)
        {
            if (operation.OperationId == "MailWithPhotos")
            {
                operation.Parameters = new List<IParameter>
                {
                    new NonBodyParameter
                    {
                        Name = "awr_file",
                        Required = false,
                        Type = "file",
                        In = "formData"
                    },
                    new  NonBodyParameter
                    {
                        Name = "awr_message",
                        Required = true,
                        Type = "string",
                        In = "formData"
                    },
                    new  NonBodyParameter
                    {
                        Type = "string",
                        In = "header",
                        Name = "Authorization",
                        Description = "token",
                        Required = true

                    }
                };
            }
        }
    }

        [HttpPost]
        [ProducesResponseType(typeof(ResponseMail), 200)]
        public async Task<PipeResponse> MailWithPhotos([FromForm] MailwithPhoto fIleUploadAPI)
        {

            var file = fIleUploadAPI.awr_file;                     // OK!!!
            var message = fIleUploadAPI.awr_message;          // OK!!!
            var tokenA = Request.Headers["Authorization"];    // OK!!!

            var fileContentStream11 = new MemoryStream();

            await fIleUploadAPI.awr_file.CopyToAsync(fileContentStream11);
            await System.IO.File.WriteAllBytesAsync(Path.Combine(folderPath,
                                            fIleUploadAPI.awr_file.FileName),
                                            fileContentStream11.ToArray());


}


        public class MailwithPhoto
        {
            public string awr_message { get; set; } 
            public string Authorization { get; set; } 
            public IFormFile awr_file { get; set; }
        }
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004758
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser
Нашел проблему

Вот так нуно в коде писать

Код: 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.
    public class SwaggerFileOperationFilter : IOperationFilter
    {
        /* Skip */
        [HttpPost]
        [ProducesResponseType(typeof(ResponseMail), 200)]
        public async Task<PipeResponse> MailWithPhotos([FromForm] MailwithPhoto fIleUploadAPI)
        {

            var file = fIleUploadAPI.awr_file;                     // OK!!!
            var message = fIleUploadAPI.awr_message;          // OK!!!
            var tokenA = Request.Headers["Authorization"];    // OK!!!

            var fileContentStream11 = new MemoryStream();

            await fIleUploadAPI.awr_file.CopyToAsync(fileContentStream11);
            await System.IO.File.WriteAllBytesAsync(Path.Combine(folderPath,
                                            fIleUploadAPI.awr_file.FileName),
                                            fileContentStream11.ToArray());


}


        public class MailwithPhoto
        {
            public string awr_message { get; set; } 
            public string Authorization { get; set; } 
            public IFormFile awr_file { get; set; }
        }


то как писать не надо :) названия ппц, но бог бы с ними.
В чем сокральный смысл из одного потока данные загружать в память, потом преобразовывать это в массив операцией ToArray(), что приведет к инстанцированию еще одного массива большого размера, который возможно будет размещен в ЛоХ, а после этого вы этот массив записывайте в 3 поток... при этом memorystream вы не освобождаете через Dispose или Using.
...
Рейтинг: 0 / 0
Net Core 2.2 и multipart запрос
    #40004828
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes
RegisteredUser
Нашел проблему

Вот так нуно в коде писать

Код: 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.
    public class SwaggerFileOperationFilter : IOperationFilter
    {
        /* Skip */
        [HttpPost]
        [ProducesResponseType(typeof(ResponseMail), 200)]
        public async Task<PipeResponse> MailWithPhotos([FromForm] MailwithPhoto fIleUploadAPI)
        {

            var file = fIleUploadAPI.awr_file;                     // OK!!!
            var message = fIleUploadAPI.awr_message;          // OK!!!
            var tokenA = Request.Headers["Authorization"];    // OK!!!

            var fileContentStream11 = new MemoryStream();

            await fIleUploadAPI.awr_file.CopyToAsync(fileContentStream11);
            await System.IO.File.WriteAllBytesAsync(Path.Combine(folderPath,
                                            fIleUploadAPI.awr_file.FileName),
                                            fileContentStream11.ToArray());


}


        public class MailwithPhoto
        {
            public string awr_message { get; set; } 
            public string Authorization { get; set; } 
            public IFormFile awr_file { get; set; }
        }


то как писать не надо :) названия ппц, но бог бы с ними.
В чем сокральный смысл из одного потока данные загружать в память, потом преобразовывать это в массив операцией ToArray(), что приведет к инстанцированию еще одного массива большого размера, который возможно будет размещен в ЛоХ, а после этого вы этот массив записывайте в 3 поток... при этом memorystream вы не освобождаете через Dispose или Using.



это был код для тестирования, а не рабочий.
рабочий код другой.

п.с. там же понятно, что код ничем не оканчивается. он обрезанный.
для меня главный был вопрос получения параметров и файла из запроса.
хотя все замечания правильные - так писать нельзя )))
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Net Core 2.2 и multipart запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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