-1

我正在使用以下技术来保留ASP.NET控件的价值。它适用于除FileUpload控件之外的每个控件。

有谁知道为什么以及如何找到解决此问题的方法?

我不想最终将 FileUpload 存储为 Session 变量,因为我不知道用户想要生成多少这些控件,并且跟踪将在 Session 中创建的所有生成的FileUpload控件不是我想要的感觉对或期待。

以下例程非常棒,但我只是看不出FileUpload成为异常的原因。

http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i

在此处输入图像描述

4

2 回答 2

0

这是一个非常简单的示例,可以帮助您入门。文件中的代码(使用从这里.aspx借来的 jquery ):

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="UploadMany.aspx.cs" Inherits="UploadMany" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <script type="text/javascript">
        var currentIndex = 1;
        function appendOneUpload() {
            $('form input:file').last().after($('<br /><input type="file" name="fileUpload' + currentIndex + '"  onchange="appendOneUpload();"/>'));
            currentIndex++;
        }
    </script>
    <input type="file" runat="server" id="fileUpload0" onchange="appendOneUpload();"/> <br />
    <asp:Button ID="uploadButton" runat="server" OnClick="uploadButton_Clicked" />
</asp:Content>

文件中的相应代码.aspx.cs

public partial class UploadMany : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void uploadButton_Clicked(object sender, EventArgs e)
    {
        var allFiles = Request.Files;
        for (int fileIndex = 0; fileIndex < allFiles.Count; fileIndex++)
        {
            HttpPostedFile oneFile = allFiles[fileIndex];
            if (oneFile.ContentLength > 0)
            {
                //do something with each uploaded file here
                int i = 0;
            }
        }
    }
}
于 2013-06-28T11:03:58.907 回答
0

您可以使用以下代码获取上传的文件集合:

HttpFileCollection hfc = Request.Files;
for (int i = 0; i < hfc.Count; i++)
{
    HttpPostedFile hpf = hfc[i];
    if (hpf.ContentLength > 0)
    {
        hpf.SaveAs(Server.MapPath("MyFiles") + "\\" +
          System.IO.Path.GetFileName(hpf.FileName));
        Response.Write("<b>File: </b>" + hpf.FileName + " <b>Size:</b> " +
            hpf.ContentLength + " <b>Type:</b> " + hpf.ContentType + " Uploaded Successfully <br/>");
    }
}
于 2013-06-28T10:35:52.943 回答