Как отобразить несколько изображений с помощью swagger api (контроллера) в C# и .netcore 3.1 с использованием сервера баз данных SQL?

#c# #asp.net-core #swagger-ui

Вопрос:

Я также завершил код для файла logincontroller.cs и файла базы данных. Но последняя строка в файле usingdatabase.cs показывает ошибку. Вот мои фрагменты кода: Usingdatabase.cs Эта функция используется для получения документов в формате изображения из api.

 public void GetUserDocuments ()
        {
            using (Con = new SqlConnection(SqlConnectionString.ConnectionString))
            {
                DataTable ds = new DataTable();
                var img="";
                try
                {
                    Con.Open();
                    string sqlquery = "Select * from Auth.UserDocuments where UserId = 2016";
                    SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlquery, Con);

                    foreach (DataRow row in ds.Rows)
                    {

                        //Get the byte array from image file
                        byte[] imgBytes = (byte[])row["Image"];

                        //If you want convert to a bitmap file
                        TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
                        Bitmap MyBitmap = (Bitmap)tc.ConvertFrom(imgBytes);


                        string imgString = Convert.ToBase64String(imgBytes);
                        //Set the source with data:image/bmp
                         img = String.Format("data:image/jpge;base64,{0}"", imgString);   //img is the Image control ID
                     
                    }
                    //LoginController imglogin = new LoginController();
                    **LoginController.ImageBase64(img);**//THIS LINE IS SHOWING ERROR.
                }
                finally
                {
                    Con.Close();
                    
                }
              
            }
 

Вот logincontroller.cs

  [HttpGet]
        [Route("GetDocuments")]

        public  string ImageBase64(string ImagePath)
        {
            try
            {
                string filepath = Path.Combine(_webHostEnvironment.WebRootPath   "\Images\UserDocuments", ImagePath);
                byte[] imageArry = System.IO.File.ReadAllBytes(filepath.Replace("//", "\"));
                string base64ImageRepresantation = Convert.ToBase64String(imageArry);
                return "data:image/jpge;base64,"   base64ImageRepresantation;
            }

            catch
            {
                return "";
            }
        }

 

Как извлечь изображения из базы данных и отобразить их в api swagger?

Ответ №1:

После тестирования мы не можем отображать несколько изображений в swaggerui.

Вы можете использовать мой пример кода, чтобы показать свое изображение отдельно.

Советы

удалить data:image/png;base64, префикс.

Пример кода

 [HttpGet]
public FileContentResult show()
{
    // get strings from db
    string base64image = "/9j/2wCEAAkGBxITEhITEhISFRUVFRcVFRUVFRUVFRUVFRUWFxUVFRUYHSggGBolHRUVITEhJSkrLi4uFx8zODMtNygtLisBCgoKDg0OFRAQFSsZFR0tLS0tLSstLS0rLS0rLS0tLS0tKy0tLS0tNysrLTctNy0tKzc3LS0tLS0tNzc3NysrK//AABEIAOEA4QMBIgACEQEDEQH/xAAbAAABBQEBAA...WghBDURCECX/9k=";
    byte[] Picture = Convert.FromBase64String(base64image);
    return File(Picture, "image/png");
}
 

введите описание изображения здесь