如何上传文件然后插入数据库?

时间:2017-09-15 13:48:52

标签: c# asp.net

我无法弄清楚如何使用上传按钮上传文件,然后插入(连同其他内容)数据库。

当我调试btnRegister_Click时,HasFile返回false。

有没有办法让HasFile持续2个不同的按钮点击?

enter image description here

上传代码:

            <tr>
                <td>Expense Receipt
                </td>
                <td class="blackDisplayName">
                    <asp:UpdatePanel ID="uplExpenseReceipt" runat="server" ViewStateMode="Enabled">
                        <ContentTemplate>
                            <asp:FileUpload ID="fuExpenseReceipt" runat="server" />
                            <asp:Button ID="btnUploadExpenseReceipt" runat="server" Text="Upload" OnClick="btnExpenseReceiptUpload_Click" />
                        </ContentTemplate>
                        <Triggers>
                            <asp:PostBackTrigger ControlID="btnUploadExpenseReceipt" />
                        </Triggers>
                    </asp:UpdatePanel>
                    <asp:Label ID="lblFileWarning" runat="server" Text="" Font-Bold="true" ForeColor="Red"></asp:Label>
                </td>
            </tr>

C#代码背后:

protected void btnExpenseReceiptUpload_Click(object sender, EventArgs e)
{
    if (!fuExpenseReceipt.HasFile)
    {
        lblFileWarning.Text = "Please browse your computer to load a pdf or jpg file";
        return;
    }

    if (fuExpenseReceipt.PostedFile.ContentLength > 1000000)
    {
        lblFileWarning.Text = "file size must be < 1Mb";
        return;
    }

    //if (!fuExpenseReceipt.PostedFile.ContentType.Equals("application/pdf") | !fuExpenseReceipt.PostedFile.ContentType.Equals("image/jpg"))
    if (!fuExpenseReceipt.PostedFile.ContentType.Equals("application/pdf"))
    {
        lblFileWarning.Text = "Only pdf or jpg files are allowed to be uploaded";
        return;
    }

    if (!Directory.Exists(@"C:\Ireland Resources\ExpenseReceipts"))
    {
        Directory.CreateDirectory(@"C:\Ireland Resources\ExpenseReceipts");
    }

    string FolderUpload = @"C:\Ireland Resources\ExpenseReceipts\";
    string PostedFile = FolderUpload + User.Identity.Name + "-" + fuExpenseReceipt.PostedFile.FileName;
    fuExpenseReceipt.SaveAs(PostedFile);
}

注册码:

            <td class="blackDisplayName" align="right">
                <asp:Button ID="btnRegister" runat="server" Text="Register" ValidationGroup="ExpenseRegistration"
                    OnClick="btnRegister_Click" CssClass="gray-gradient" SkinID="NONE"/>
            </td>

C#代码背后:

protected void btnRegister_Click(object sender, EventArgs e)
{
    try
    {
        if (!fuExpenseReceipt.HasFile)
        {
            lblFileWarning.Text = "Please browse your computer to load a pdf or jpg file";
            return;
        }

        byte[] expenseReceipt = null;

        Stream fs = fuExpenseReceipt.PostedFile.InputStream;
        byte[] bytFileData = new byte[fs.Length];
        fs.Read(bytFileData, 0, Convert.ToInt32(fs.Length));
        fs.Close();
        expenseReceipt = bytFileData;

        int tillID = Int32.Parse(hfTillID.Value);

        double beforeVAT = double.Parse(txtBeforeVAT.Text);
        double VAT = double.Parse(txtVAT.Text);
        double totalAmount = double.Parse(txtExpenseTotal.Text);
        lblExpenseMessage.Visible = true;
        try
        {
            new TillEndOfDayDAL().SaveExpense(StationID, tillID, beforeVAT, VAT, totalAmount, txtExpenseDescription.Text
                , expenseReceipt, Int32.Parse(ddlExpenseTypes.SelectedValue), Page.User.Identity.Name.ToUpper());

            lblExpenseMessage.Text = "Sundry expense has been successfully registered.";

        }

1 个答案:

答案 0 :(得分:0)

我通过执行以下操作解决了这个问题:

  • 删除了Upload按钮
  • PostBackTrigger移至&#39;外部&#39;的末尾。 UpdatePanel,其中包含 FileUpload控件和Register按钮。
  • PostBackTrigger ControlID更改为Register按钮。