asp.net mvc +多个文件上传标题和说明

时间:2014-12-05 12:40:56

标签: asp.net asp.net-mvc file-upload

下午好,

我是ASP.NET MVC的新手。我的要求是使用MVC创建一个小型Web应用程序,可以使用描述和标题上传多个文件。我在网上发现了很多与单个或多个文件上传相关的文章,但仍然无法找到那些像我的要求那样说话的文章。

enter image description here

描述和文件选择块可以具有与用户一样多的数量。他们可以在单个上传按钮上单击上传多个带有说明的文件。

我确实需要你的专业知识来帮助我。 最好的问候,

Veasna

2 个答案:

答案 0 :(得分:0)

我认为这不是MVC问题。

您需要的是发送一份表格,该表格将发送多个文件,并且还会发送与每个文件相关的数据(在这种情况下是每个文件的描述)。

实际上,对于多部分表单数据,您可以发送此类信息,但是,之前的经验告诉我,通过多部分表单上传的多个文件通常会给您带来很多麻烦。

如果您的目标用户需要使用某种现代浏览器,我建议您使用HTML5的javascript文件API,这非常有用且功能强大。

您可以使用客户端代码来识别用户正在选择的文件,分配给每个文件的描述值以及使用所有数据构建JSON对象。

构建数据包后,您可以通过AJAX调用将其发送到服务器。 在控制器上,您可以拥有一个管理此JSON数据包的操作,并以业务模型定义它的方式保存它。

您在这里有一篇关于javascript文件API的优秀文章:http://www.html5rocks.com/en/tutorials/file/dndfiles/

希望这有帮助。

答案 1 :(得分:0)

根据您的说明,您可以浏览以下链接以供参考: -

Multiple file upload with titles

还有一些与之相关的代码。

protected void SaveButton_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in ImagesGrid.Rows)
        {
            var title = row.FindControl("txtTitle") as TextBox;
            var description = row.FindControl("txtDescription") as TextBox;
            var imageFile = row.FindControl("flUpload") as FileUpload;
        }
    }
    protected void btnEnter_Click(object sender, EventArgs e)
    {
        if (txtImages.Text != "")
        {
            pnltwo.Visible= true;
        }
        var imageCount = Convert.ToInt32(txtImages.Text);
        var list = new List<string>(imageCount);
        list.AddRange(Enumerable.Repeat(String.Empty, imageCount));
        ImagesGrid.DataSource = list;
        ImagesGrid.DataBind();

    }

<强> ASPX

<asp:Panel ID="pnlone" runat="server">

                         <asp:Label ID="lbltext" runat="server" Text="Enter the no of images to upload"></asp:Label>
                            <asp:TextBox ID="txtImages" CssClass="form-control" runat="server"></asp:TextBox><br />
                                 <asp:RequiredFieldValidator ID="reqtxt" runat="server" CssClass="error-class" ControlToValidate="txtImages" ErrorMessage="Please enter value"></asp:RequiredFieldValidator>
                            <asp:Button ID="btnEnter" runat="server" CssClass="btn btn-prm" CausesValidation="true" OnClick="btnEnter_Click" Width="75px" Text="Upload" />
                        </asp:Panel>

                        <asp:Panel ID="pnltwo" runat="server">

                            <asp:GridView ID="ImagesGrid" runat="server" AutoGenerateColumns="false">
                                <Columns>
                                    <asp:TemplateField HeaderText="Sl No">
                                        <ItemTemplate><%# Container.DisplayIndex + 1 %></ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Title">
                                        <ItemTemplate>
                                            <asp:TextBox ID="txtTitle" runat="server" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Description">
                                        <ItemTemplate>
                                            <asp:TextBox ID="txtDescription" runat="server" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="File">
                                        <ItemTemplate>
                                            <asp:FileUpload ID="flUpload" runat="server" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                            <br />
                            <asp:Button ID="SaveButton" Text="Save" CssClass="btn btn-prm" CausesValidation="false" runat="server" OnClick="SaveButton_Click" />
                        </asp:Panel>