为了账号安全,请及时绑定邮箱和手机立即绑定

通过 web api 将大图像发布到数据库

通过 web api 将大图像发布到数据库

C#
森栏 2021-07-01 14:00:09
我正在尝试将 3036x4048 照片保存到 SQL 数据库。我已经使用 Javascript 将它转换为 base64 字符串,但是每当我尝试将它发布到我的 web api 时,对象显示为空。我可以毫无问题地保存较小的照片,所以我知道 web api 有效。根据我的研究,byte[] 可以存储的最大长度是 2,146,435,071。我尝试发布的图像长度为 9,218,020。我还查看了图像大小,大约 6 MB。我还手动将此图像插入数据库,它接受它就好了。那么为什么我的 web api 不能处理更大的图像呢?图像大小 (6 MB) 是否太大?这是一些代码。不确定它是否会有所帮助。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 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

你仍然需要设置maxRequestLength的web.config明确。该默认为4MB。


例如 51200 为 50MB。


<?xml version="1.0"?>

<configuration>

  ...

  <system.web>

    <httpRuntime executionTimeout="240" maxRequestLength="51200" />

  </system.web>

  ...

</configuration>


查看完整回答
反对 回复 2021-07-03
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信