【问题标题】:Why I can't get selected file on server side?为什么我无法在服务器端获取选定的文件?
【发布时间】:2016-02-27 23:10:23
【问题描述】:

我有这个 asp 代码:

        <asp:Panel runat="server">  
            <div class="row2">
            <input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" id="fileSelect" name="fileSelect" runat="server" />
            <asp:Button ID="btnUpload" runat="server" Text="load" OnClick="btnUpload_Click2" CausesValidation="False" />
            </div>
        </asp:Panel>

这里是浏览器上生成的HTML代码:

<div class="row2">               
            <input name="ctl00$ContentPlace$fileSelect" type="file" id="ctl00_ContentPlace_fileSelect" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
            <input type="submit" name="ctl00$ContentPlace$btnUpload" value="load" id="ctl00_ContentPlace_btnUpload">
        </div>
</div>

下面是代码:

    protected void btnUpload_Click2(object sender, EventArgs e)
    {
        HttpPostedFile file = Request.Files["fileSelect"];                     
    }

在输入文件元素的帮助下选择文件后,按下 btnUpload 后触发的代码,但我总是得到文件值 null。

如果我改变这一行:

HttpPostedFile file = Request.Files["fileSelect"];

到这一行:

HttpPostedFile file = Request.Files["ctl00$ContentPlace$fileSelect"]; 

我在服务器上的文件变量中获取选定的文件。

所以我的问题是,如果我使用这一行,为什么我无法获取文件:

HttpPostedFile file = Request.Files["fileSelect"];

【问题讨论】:

  • 如果您在客户端检查生成的 HTML,文件上传元素的 name 属性的值是多少?

标签: asp.net


【解决方案1】:

您在服务器端运行的输入控件,更改其 ID,并获取发布的名称,您需要使用 UniqueID as

HttpPostedFile file = Request.Files[fileSelect.UniqueID];

在您的情况下,fileSelect.UniqueID 是 return "ctl00$ContentPlace$fileSelect",这是在 html 上呈现的nane 控件,即在帖子中使用的控件。

你也可以看到Accessing control client name and not ID in ASP.NET

如何使用您输入的内容

使用那条线

HttpPostedFile file = Request.Files["fileSelect"];

只需从您的输入控件中删除 runat="server"

【讨论】:

    猜你喜欢
    • 2013-06-30
    • 2019-11-18
    • 1970-01-01
    • 2015-05-07
    • 2023-04-11
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多