我需要帮助弄清楚如何在上传文件时将上传文件的名称传递到 SQL 数据库中;到目前为止,我只能让上传者工作。
由于我在 Visual Web Developer 2008 中构建此项目,因此在页面代码中建立了 Sql 数据源和连接字符串:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ARW-KidsConnectionString1 %>"
DeleteCommand=" ... "
InsertCommand="INSERT INTO [Kids] ( ... , [Picture], ...) VALUES ( ... , @Picture, ...)"
ProviderName="<%$ ConnectionStrings:ARW-KidsConnectionString1.ProviderName %>"
SelectCommand=" ... "
UpdateCommand=" ... ">
我已经编辑了该片段,因为它是重点关注的插入命令。“孩子”表中的“图片”列应该包含给定孩子的上传图片的名称,这很重要,因为我们确实有一个占位符图片,当没有可用图片时使用它。
这是上传图片的表单中的代码;它是 DetailsView 的一部分,其中包含收集新列表的所有信息的表单。
<InsertItemTemplate>
Upload Image:<br />
<asp:FileUpload ID="picUpload" runat="server" />
<asp:CustomValidator ID="imageCheck" runat="server" ErrorMessage="Upload Image Files Only" CssClass="ErrorMsg"></asp:CustomValidator>
</InsertItemTemplate>
这是处理图片上传的代码中的完整方法。您会注意到我在 DetailsView 的 ItemInserting 事件上触发了它。
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
FileUpload pu = (FileUpload)DetailsView1.FindControl("picUpload");
string virtualFolder = "~/WisconsinKids/Kid_Images/";
string physicalFolder = Server.MapPath(virtualFolder);
string fileName = "nopic.jpg";
if (!pu.HasFile)
{
}
if (pu.HasFile)
{
if (pu.FileName.ToLower().EndsWith(".jpg") ||
pu.FileName.ToLower().EndsWith(".jpeg") ||
pu.FileName.ToLower().EndsWith(".gif") ||
pu.FileName.ToLower().EndsWith(".png") ||
pu.FileName.ToLower().EndsWith(".bmp"))
{
fileName = pu.FileName.ToString();
pu.SaveAs(System.IO.Path.Combine(physicalFolder, fileName));
}
else
{
CustomValidator imageCheck = (CustomValidator)DetailsView1.FindControl("imageCheck");
imageCheck.IsValid = false;
e.Cancel = true;
}
}
}
我想要做的是将该字符串“fileName”推送到表 Kids 的图片记录中。由于我已经在前端建立了数据源连接,我的直觉告诉我,我不应该在代码隐藏中再次这样做,但经过三天的搜索,我已经没有想法了。
提前感谢您提供的任何帮助。如果您需要更多信息,请告诉我,我会尽力澄清,请记住我是新手。