[msdn]如何:使用 FileUpload Web 服务器控件上载文件

    1. 向页面添加 FileUpload 控件。
    1. Note注意

    出于安全方面的考虑,不能将文件名预加载到 FileUpload 控件中。

    1. 在事件(如该页的 Load 事件)的处理程序中,执行下面的操作:
    2. 通过测试 FileUpload 控件的 HasFile 属性,检查该控件是否有上载的文件。

    3. 检查该文件的文件名或 MIME 类型以确保用户已上载了您要接收的文件。若要检查 MIME 类型,请获取作为 FileUpload 控件的 PostedFile 属性公开的 HttpPostedFile 对象。然后,通过查看已发送文件的 ContentType 属性,就可以获取该文件的 MIME 类型。

      Security note安全注意

      在某些情况下,已上载文件的 MIME 类型可能是伪造的,因此只检查文件的 MIME 类型不是一种可靠的安全检查。

    4. 将该文件保存到您指定的位置。您可以调用 HttpPostedFile 对象的 SaveAs 方法。或者,还可以使用 HttpPostedFile 对象的 InputStream 属性,以字节数组或字节流的形式管理已上载的文件。

    5. 下面的示例演示如何使用已上载的文件。该代码根据允许的文件扩展名的硬编码列表检查已上载文件的文件扩展名,并拒绝所有其他类型的文件。然后,将该文件写入当前网站的 UploadedImages 文件夹中。用已上载文件在客户端计算机上的文件名保存该文件。由于 HttpPostedFile 对象的 FileName 属性返回该文件在客户端计算机上的完整路径,因此会使用 FileUpload 控件的 FileName 属性。
    1. Security note安全注意

    请不要向用户显示所保存文件的路径和文件名;这样做可能会将有用的信息泄露给恶意用户。

  • C#
    protected void Page_Load(object sender, EventArgs e)
    {
    if(IsPostBack)
    {
    Boolean fileOK = false;
    String path = Server.MapPath("~/UploadedImages/");
    if (FileUpload1.HasFile)
    {
    String fileExtension =
    System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
    String[] allowedExtensions =
    {".gif", ".png", ".jpeg", ".jpg"};
    for (int i = 0; i < allowedExtensions.Length; i++)
    {
    if (fileExtension == allowedExtensions[i])
    {
    fileOK = true;
    }
    }
    }
    if (fileOK)
    {
    try
    {
    FileUpload1.PostedFile.SaveAs(path
    + FileUpload1.FileName);
    Label1.Text = "File uploaded!";
    }
    catch (Exception ex)
    {
    Label1.Text = "File could not be uploaded.";
    }
    }
    else
    {
    Label1.Text = "Cannot accept files of this type.";
    }
    }
    }
    
    posted @ 2009-03-24 16:44  sunshine^^  阅读(620)  评论(0编辑  收藏  举报