我试图将3036x4048照片保存到SQL数据库。我已经使用Javascript将它转换为base64字符串,但每当我尝试将其发布到我的web api时,对象显示为null。我可以毫无问题地保存较小的照片,所以我知道web api有效。根据我的研究,byte []可以存储的最大长度是2,146,435,071。我尝试发布的图片长度为9,218,020。我还查看了图像大小,大约6 MB。我还手动将此图像插入数据库,它接受它就好了。那么为什么我的网络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;
}
答案 0 :(得分:2)
您仍然需要明确地在maxRequestLength
中设置web.config
。 default为4MB。
E.g。 51200表示50MB。
<?xml version="1.0"?>
<configuration>
...
<system.web>
<httpRuntime executionTimeout="240" maxRequestLength="51200" />
</system.web>
...
</configuration>