C# 将图像存储在DataTable中,在GridView中显示,最终存储在DB中
我需要允许用户将文件上载到服务器。这些是图像文件,在将它们存储在数据库中之前,我需要用户提供有关他们正在上载的图像的其他信息 到目前为止,我有一个HTML 5多文件上传:C# 将图像存储在DataTable中,在GridView中显示,最终存储在DB中,c#,image-processing,binary,C#,Image Processing,Binary,我需要允许用户将文件上载到服务器。这些是图像文件,在将它们存储在数据库中之前,我需要用户提供有关他们正在上载的图像的其他信息 到目前为止,我有一个HTML 5多文件上传: <asp:FileUpload ID="fuTestUpload" AllowMultiple="true" runat="server" /> 但是,这不起作用,它可能是空白的,也可能是各种字节/流错误 你知道如何做到这一点吗 用此解决 if (fuTestUpload.HasFiles) {
<asp:FileUpload ID="fuTestUpload" AllowMultiple="true" runat="server" />
但是,这不起作用,它可能是空白的,也可能是各种字节/流错误
你知道如何做到这一点吗
用此解决
if (fuTestUpload.HasFiles)
{
foreach (HttpPostedFile file in fuTestUpload.PostedFiles)
{
byte[] bImage = new byte[file.ContentLength];
file.InputStream.Read(bImage, 0, file.ContentLength);
success = myClass.TempStoreLocationImages(bImage, file.FileName.ToString());
}
}
感谢您对赏金奖励v答案的建议,因为我不确定。字节/流错误的“空白”错误让我觉得问题还在后面。上传是否在Ajax容器中?能否在Upload方法调用的第一行插入一个断点,然后点击该断点?如果答案是“否”,请打开一个Http调试器(如Fiddler),并确认流量是否正确地到达调试服务器。数据表中的列类型错误 这意味着您正在存储字节[](系统.byte[]字符串)的字符串表示形式 使用:
btnUpload_Click代码应该是这样的:
dr[“ImageData”]=bImage代码>?我尝试了这两种方法,都没有成功-但是验证二进制数据是否正确存在固有的困难!上载在上面的代码中,这是ASP.NET上载控件,但是我现在更关注此控件以及如何从上载控件获取数据并将其转换为二进制数据进行存储。
protected void btnUpload_Click(object sender, EventArgs e)
{
if (fuTestUpload.HasFiles)
{
DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("FilePath");
dt.Columns.Add("ImageData");
foreach (HttpPostedFile file in fuTestUpload.PostedFiles)
{
DataRow dr = dt.NewRow();
dr["FilePath"] = file.FileName.ToString();
Byte[] bImage = new Byte[file.ContentLength];
Stream myStream = file.InputStream;
myStream.Read(bImage, 0, file.ContentLength);
dr["ImageData"] = myStream;
dt.Rows.Add(dr);
}
Session["UploadedImageData"] = dt;
populateGrid(dt);
}
}
if (fuTestUpload.HasFiles)
{
foreach (HttpPostedFile file in fuTestUpload.PostedFiles)
{
byte[] bImage = new byte[file.ContentLength];
file.InputStream.Read(bImage, 0, file.ContentLength);
success = myClass.TempStoreLocationImages(bImage, file.FileName.ToString());
}
}
dt.Columns.Add("ImageData", typeof(byte[]));