Размещение большого изображения в базе данных через веб-интерфейс - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь сохранить фотографию 3036x4048 в базе данных SQL.Я преобразовал его в строку base64 с помощью Javascript, но всякий раз, когда я пытаюсь опубликовать его в моем веб-API, объект отображается как нулевой.Я могу сохранить небольшие фотографии без проблем, поэтому я знаю, что веб-API работает.Согласно моим исследованиям максимальная длина, которую может хранить байт [], составляет 2 146 435 071.Изображение, которое я пытаюсь опубликовать, имеет длину 9,218,020.Я также посмотрел на размер изображения, и это около 6 МБ.Я также вручную вставил это изображение в базу данных, и он принимает его просто отлично.Так почему мой веб-API не может обрабатывать увеличенное изображение?Размер изображения (6 МБ) слишком большой?

Вот немного кода.Не уверен, поможет ли это.

public class TicketPhoto
{
    public int PhotoID { get; set; }
    public byte[] Photo { get; set; }
    public string Description { get; set; }
}

 public static TicketPhoto SaveTicketPhoto(TicketPhoto tcktPhoto)
    {
        TicketPhoto ticketPhoto = new TicketPhoto();

        string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            DataTable ticketPhotoTable = new DataTable();
            ticketPhotoTable.Columns.Add("PHOTO_ID", typeof(int));
            ticketPhotoTable.Columns.Add("PHOTO", typeof(byte[]));
            ticketPhotoTable.Columns.Add("DESCRIPTION", typeof(string));

            ticketPhotoTable.Rows.Add(
                                        tcktPhoto.PhotoID,
                                        tcktPhoto.Photo,
                                        tcktPhoto.PhotoData,
                                      );

            using (connection)
            {
                SqlCommand cmd = new SqlCommand("dbo.spSMSaveTicketPhoto", connection);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter tblParam = cmd.Parameters.AddWithValue("@tblTicketPhoto", ticketPhotoTable);
                tblParam.SqlDbType = SqlDbType.Structured;

                cmd.ExecuteReader();
                cmd.Dispose();
            }
        }
        return ticketPhoto;
    }

1 Ответ

0 голосов
/ 24 мая 2018

Вам все еще нужно явно указать maxRequestLength в web.config. по умолчанию составляет 4 МБ.

Например, 51200 для 50 МБ.

<?xml version="1.0"?>
<configuration>
  ...
  <system.web>
    <httpRuntime executionTimeout="240" maxRequestLength="51200" />
  </system.web>
  ...
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...