博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

input type="file" 文件上传 multipart/form-data 取不到值 asp.net

Posted on 2011-10-11 13:53  Honor  阅读(891)  评论(0)    收藏  举报

asp.net控件“FileUpload”,因为用服务器端控件灵活性不好。用客户端控件<input type="file" name="fileUpload" id="fileUplaod" >.

用客户端控件时要注意:

       首先<form/>的属性一定要设成:enctype="multipart/form-data";

       其次<input type="file" name="xxxxxxx"/>一定不要忘记“name”属性。否则在后台代码中用Request.Files是取不到值得!

具体代码如下:

前台代码
     <form id="form1" action="FileUpload.aspx" method="post" enctype="multipart/form-data">
    <div>
        <input id="File1" type="file" name="File1"/>
        <input id="Submit1" type="submit" value="上传" />
    </div>
    </form>

后台代码
            System.Web.HttpFileCollection files = Request.Files;
            for (int fileCount = 0; fileCount < files.Count; fileCount++)
            {
                System.Web.HttpPostedFile postedfile = files[fileCount];

                string fileName = System.IO.Path.GetFileName(postedfile.FileName);
                if (!String.IsNullOrEmpty(fileName))
                {

                    string fileExtension = System.IO.Path.GetExtension(fileName);    //获取文件类型

                    //上传目录
                    string directory = Server.MapPath("/UpLoadFiles/");
                    //文件全路径
                    string path = directory + fileName;

                    //判断目录是否存在
                    if (!Directory.Exists(directory))
                    {
                        Directory.CreateDirectory(directory);
                    }
                    //文件存在就删除文件
                    if (File.Exists(path))
                    {
                        File.Delete(path);
                    }
                    //上传到服务器的路径
                    postedfile.SaveAs(path);                  
                }
            }