【发布时间】:2014-06-29 01:21:05
【问题描述】:
我正在尝试将图像及其属性和几个文本框插入数据库。这是 HTML 代码:
<span class="label"><label for="FirstName">First Name: </label></span>
<asp:TextBox ID="FirstName" runat="server"></asp:TextBox>
</div>
<div class="row">
<span class="label"><label for="Surname">Surname: </label></span>
<asp:TextBox ID="Surname" runat="server"></asp:TextBox>
</div>
<div class="row">
<span class="label"><label for="PhotoUpload">Photo: </label></span>
<asp:FileUpload ID="PhotoUpload" runat="server" />
</div>
<div class="row">
<span class="label"> </span>
<asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" />
代码隐藏:
protected void Button1_Click(object sender, EventArgs e)
{
if (PhotoUpload.HasFile)
{
Stream photoStream = PhotoUpload.PostedFile.InputStream;
int photoLength = PhotoUpload.PostedFile.ContentLength;
string photoMime = PhotoUpload.PostedFile.ContentType;
string photoName = Path.GetFileName(PhotoUpload.PostedFile.FileName);
byte[] photoData = new byte[photoLength - 1];
photoStream.Read(photoData, 0, photoLength);
string CS = ConfigurationManager.ConnectionStrings["mm"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("spLogo", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FName", FirstName.Text);
cmd.Parameters.AddWithValue("@SName", Surname.Text);
cmd.Parameters.AddWithValue("@PData", photoData);
cmd.Parameters.AddWithValue("@PName", photoName);
cmd.Parameters.AddWithValue("@PLength", photoLength);
cmd.Parameters.AddWithValue("@PMime", photoMime);
cmd.ExecuteNonQuery();
}
}
这可能是什么问题?
这是我的存储过程:
alter procedure spLogo
@FName nvarchar(50),
@SName nvarchar(50),
@PData VarBinary(max),
@PName nvarchar(50),
@PLength int,
@PMime nvarchar(50)
as
begin
Insert into Employee2 values(@FName,@SName,@PData,@PName,@PLength,@PMime)
END
我是第一次处理图像,所以我不确定哪种数据类型最好,但这是我能想到的最好的代码。
【问题讨论】:
-
您在哪一行得到错误? photoStream.Read(photoData, 0, photoLength); ??
-
photoData 小于 PhotoUpload.PostedFile.InputStream... 也许?
-
那么我怎样才能确保它支持所有尺寸的图像。我不知道使用 VarBinary(max) 在这里是否有任何作用。
-
选中此项以将文件上传保存到字节 [],stackoverflow.com/questions/3068303/fileupload-to-filestream,Varbinary(max) 似乎不是问题......也许你可以尝试/抓住这个块......跨度>
标签: asp.net sql-server image