如何使用asp.net fileupload控件保存文件?

时间:2016-08-03 15:46:56

标签: c# asp.net

我有一个asp.net webforms c#应用程序,它在FormView的InsertItemTemplate中有一个FileUpload控件。插入新记录时,正确的路径+文件名将保存到数据库中的相应字段,但该文件不会保存到Data文件夹中。这是背后的代码:

protected void fv_ven_doc_det_DataBound(object sender, EventArgs e)
    {
        if (fv_ven_doc_det.CurrentMode == FormViewMode.Insert)
        {
            //Set the fk                
            TextBox venIdFkTxt = (TextBox)fv_ven_doc_det.FindControl("venIdFkTextBox");
            if (venIdFkTxt != null)
            {
                venIdFkTxt.Text = hdn_ven_id.Value;
            }

            //Get the upload date - current date and time
            hdn_doc_upload_dt_txt.Value = DateTime.Now.ToString();
            string docuplddt = fv_ven_doc_det.FindControl("docUpldDtTextBox").ToString();
            docuplddt = hdn_doc_upload_dt_txt.Value;

            TextBox docuplddttxt = (TextBox)fv_ven_doc_det.FindControl("docUpldDtTextBox");
            if (docuplddttxt != null)
            {
                docuplddttxt.Text = hdn_doc_upload_dt_txt.Value;
            }

            //Set the current status
            TextBox crntDocStatTxt = (TextBox)fv_ven_doc_det.FindControl("docStatTextBox");
            if (crntDocStatTxt != null)
            {
                crntDocStatTxt.Text = "4";
            }

            //Set the filename and save the file
            int i = 0;

            FileUpload fu = (FileUpload)(fv_ven_doc_det.FindControl("fu_doc_upld"));
            string filename = fu.FileName;

            if (fu.HasFile == true)
            {
                while (System.IO.File.Exists(Server.MapPath("~/Data/") + filename))
                {
                    i++;
                    filename = fu.FileName + " (" + i.ToString() + ")";                        
                }
                fu.PostedFile.SaveAs(Server.MapPath("~/Data/") + filename);
            }

            TextBox filenameTxt = (TextBox)fv_ven_doc_det.FindControl("docPathTextBox");
            {
                filenameTxt.Text = (Server.MapPath("~/Data/") + filename);
            }

        }
    }

这是FormView的InsertItemTemplate:

<InsertItemTemplate>
                            <asp:TextBox Text='<%# Bind("venIdFk") %>' runat="server" ID="venIdFkTextBox" Visible="false" />
                            <asp:TextBox Text='<%# Bind("docPath") %>' runat="server" ID="docPathTextBox" Visible="false" />
                            <asp:TextBox Text='<%# Bind("docStat") %>' runat="server" ID="docStatTextBox" Visible="false" />
                            <asp:TextBox Text='<%# Bind("docUpldDt") %>' runat="server" ID="docUpldDtTextBox" Visible="false" />

                            <div class="row">
                                <div class="form-group col-md-3">
                                    <strong>Title</strong><br />
                                    <asp:TextBox Text='<%# Bind("docTitle") %>' runat="server" ID="docTitleTextBox" CssClass="form-control widecontrol" /><br />
                                </div>
                                <div class="form-group col-md-3">
                                    <strong>Type</strong><br />                                        
                                    <asp:DropDownList ID="ddlVenDocType" runat="server" DataSourceID="sdc_doc_type" DataTextField="dtype" DataValueField="dtypeId" SelectedValue='<%# Bind("docType") %>' AppendDataBoundItems="true" CssClass="form-control widecontrol"><asp:ListItem Value="">--Please Select--</asp:ListItem></asp:DropDownList><br />
                                </div>
                                <div class="form-group col-md-3">
                                    <strong>Organization</strong><br />
                                    <asp:DropDownList ID="ddlVenDocOrg" runat="server" DataSourceID="sdc_orgs" DataTextField="org" DataValueField="orgId" SelectedValue='<%# Bind("docOrg") %>' AppendDataBoundItems="true" CssClass="form-control widecontrol"><asp:ListItem Value="">--Please Select--</asp:ListItem></asp:DropDownList><br />
                                </div>
                                <div class="form-group col-md-3">
                                    <strong>Department</strong><br />                            
                                    <asp:DropDownList ID="ddlVenDocDept" runat="server" DataSourceID="sdc_depts" DataTextField="dept" DataValueField="deptId" SelectedValue='<%# Bind("docDept") %>' AppendDataBoundItems="true" CssClass="form-control widecontrol"><asp:ListItem Value="">--Please Select--</asp:ListItem></asp:DropDownList><br />
                                </div>
                            </div>
                            <div class="row">
                                <div class="form-group col-md-3">
                                    <strong>Prior Contract Code</strong><br />
                                    <asp:TextBox Text='<%# Bind("PriorContCd") %>' runat="server" ID="PriorContCdTextBox" CssClass="form-control widecontrol" /><br />
                                </div>
                                <div class="form-group col-md-3">
                                    <strong>Legal / Compliance Contract ID</strong><br />
                                    <asp:TextBox Text='<%# Bind("LegCompContId") %>' runat="server" ID="LegCompContIdTextBox" CssClass="form-control widecontrol" /><br />
                                </div>
                            </div>
                            <div class="row">
                                <div class="form-group col-md-12">
                                    <strong>Description</strong><br />
                                    <asp:TextBox Text='<%# Bind("docDesc") %>' runat="server" ID="docDescTextBox" CssClass="form-control widecontrol" Rows="5" TextMode="MultiLine" /><br />
                                </div>
                            </div>
                            <div class="row">
                                <div class="form-group col-md-12">
                                    <asp:FileUpload ID="fu_doc_upld" runat="server" />
                                    <asp:RequiredFieldValidator ID="rfv_fu_doc_upld" runat="server" ErrorMessage="A file must be chosen to upload." ControlToValidate="fu_doc_upld" ForeColor="#ff0000" Font-Bold="true">*</asp:RequiredFieldValidator>
                                </div>
                            </div>    

                            <asp:LinkButton runat="server" Text="Insert" CommandName="Insert" ID="InsertButton" CausesValidation="True" CssClass="cmdlinkpdg" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="InsertCancelButton" CausesValidation="False" CssClass="cmdlinkpdg" />

                        </InsertItemTemplate>

我没有收到任何错误,只是没有保存文件。

1 个答案:

答案 0 :(得分:0)

好的,它有助于停止并思考实际需要发生的事情。我移动了文件名/路径并上传到OnItemInserting,现在一切正常。