如何正确使用ASP.NET FileUpload控件

时间:2010-02-11 01:03:40

标签: c# asp.net networking file-upload

我正在尝试使用ASP.NET中的FileUpload控件

这是我当前的命名空间设置:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

在我的课堂上,我只是在使用:

FileUpload fileUpload = new FileUpload();

但是,通常不属于FileUpload的属性似乎都不可用......例如.HasFile。我正在尝试在后面的代码中使用Button click方法,我注意到.HasFile的大部分用法都在前面的代码中,但是我的理解是这不重要。

有谁知道为什么?

6 个答案:

答案 0 :(得分:54)

应该将ASP.NET控件放在aspx标记文件中。这是与他们合作的首选方式。因此,请将FileUpload控件添加到您的页面。确保其包含所有必需属性,包括IDrunat

<asp:FileUpload ID="FileUpload1" runat="server" />

FileUpload1的实例将自动在自动生成/更新的* .designer.cs文件中创建,该文件是页面的部分类。您通常不必关心其中的内容,只需假设对aspx页面的任何控件都会自动实例化。

添加一个可以回发的按钮:

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

然后转到您的* .aspx.cs文件,其中包含您的代码并添加按钮单击处理程序。在C#中它看起来像这样:

protected void Button1_Click(object sender, EventArgs e)
{
  if (this.FileUpload1.HasFile)
  {
    this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName);
  }
}

就是这样。一切都应该按预期工作。

答案 1 :(得分:1)

不是在代码隐藏文件中实例化FileUpload,而是在标记文件(.aspx文件)中声明它:

<asp:FileUpload ID="fileUpload" runat="server" />

然后您将能够访问该控件的所有属性,例如HasFile

答案 2 :(得分:1)

从后面的代码添加FileUpload控件应该可以正常工作,其中HasFile属性应该可用(例如在Click事件中)。

如果属性似乎不可用(作为编译器错误或通过智能感知),您可能引用的变量与您认为的不同。

答案 3 :(得分:1)

我在代码背后的解决方案是:

    mData=mData %>%
    mutate(Budget=as.numeric(Budget),  
    Interaction.Rate=as.numeric(gsub("%","",Interaction.Rate)),  
    Cost=as.numeric(Cost),  
    CTR=as.numeric(gsub("%","",CTR)))  

我不知道为什么,但是当你在没有 System.Web.UI.WebControls 的情况下使用FileUpload时,它正在引用 YourProject.FileUpload 而不是系统.Web.UI.WebControls.FileUpload

答案 4 :(得分:0)

我注意到当intellisence对某个对象不起作用时,你正在处理的上一行中的某个地方通常会出现错误。

另一个选项是您没有将FileUpload对象实例化为实例变量。确保代码:

FileUpload fileUpload = new FileUpload();

不在代码后面的函数中。

答案 5 :(得分:0)

旧问题,但仍然可以帮助您,这是完整示例

<form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" /><br/>
        <asp:Button ID="Button1" runat="server" Text="Upload File" OnClick="UploadFile" /><br/>
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </div>
</form>

在您的代码隐藏中,C#代码捕获文件并将其保存在目录中

protected void UploadFile(object sender, EventArgs e)
    {
        //folder path to save uploaded file
        string folderPath = Server.MapPath("~/Upload/");

        //Check whether Directory (Folder) exists, although we have created, if it si not created this code will check
        if (!Directory.Exists(folderPath))
        {
            //If folder does not exists. Create it.
            Directory.CreateDirectory(folderPath);
        }

       //save file in the specified folder and path
        FileUpload1.SaveAs(folderPath + Path.GetFileName(FileUpload1.FileName));

        //once file is uploaded show message to user in label control
        Label1.Text = Path.GetFileName(FileUpload1.FileName) + " has been uploaded.";
    }

来源:File Upload in ASP.NET (Web-Forms Upload control example)