如何在ASP.NET C#中将上载文件的文件名传递到SQL值中

本文关键字:文件名 值中 SQL 文件 上载 ASP NET | 更新日期: 2023-09-27 17:58:19

我需要帮助弄清楚如何在上传文件时将其名称传递到SQL数据库中;到目前为止,我只能让上传器工作。

由于我是在VisualWebDeveloper2008中构建这个项目的,因此在页面的代码中建立了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=" ... ">

我对这个片段进行了编辑,因为它关注的是Insert命令。"Kids"表中的"Picture"列应该包含给定孩子上传的图片的名称,这一点很重要,因为我们确实有一个占位符图片,当没有图片可用时会使用。

这是上传图像的表单中的代码;它是DetailsView的一部分,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的图片记录中。由于我已经在前端建立了数据源连接,我的直觉告诉我不应该在代码后台再做一次,但经过三天的搜索,我没有想法了。

提前感谢您的帮助。如果你需要更多信息,请告诉我,我会尽力澄清,请记住我是新手。

如何在ASP.NET C#中将上载文件的文件名传递到SQL值中

尝试:

e.Values["Picture"] = pu.FileName;

这里有一个例子。据此,以上内容应该就是你所需要的。