//将附件路径
        string str = this.FileUpload1.PostedFile.FileName;
        //判断附件不能为空!
        if (str == string.Empty)
        {
            Response.Write(bc.MessageBox("上传文件不能为空!"));
            return;
        }
        //获取附件名称 
        string fileName = str.Substring(str.LastIndexOf("\\") + 1);
        path = "..\\file\\" + fileName;                         //设置附件上传到的服务器路径
        FileInfo fileInfo = new FileInfo(str);                  //获取文件信息
        long fileSize = (fileInfo.Length / 1024) / 1024;        //获取文件大小
        if (fileSize > 10)                                      //控制文件大小不能超过10M
        {
            Response.Write(bc.MessageBox("文件大小不能超过10M !"));
            return;                                             //不能继续执行
        }
        //上传送文件的相关信息保存到服务器中
        bool bl = bc.ExecSQL("INSERT INTO tb_file (fileSender, fileAccepter, fileTitle, fileTime, fileContent, path,examine,fileName) VALUES('" + Convert.ToString(Session["loginName"]) + "','" + ddlName.Text + "','" + txtTitle.Text + "','" + DateTime.Today.ToString() + "','" + txtContent.Text + "','" + path + "','未接收','" + fileName + "')");
        if (bl)
        {
            Response.Write(bc.MessageBox("文件传送成功!"));
        }
        else
        {
            Response.Write(bc.MessageBox("网络故障,文件传送失败!"));
            return;
        }
        this.FileUpload1.PostedFile.SaveAs(Server.MapPath(path));         //将文件保存到服务器上
代码是这样的,我知道string str = this.FileUpload1.PostedFile.FileName; 这个不对,因为在服务器上,他获取的是服务器上的本地硬盘的路径文件,肯定找不到文件,但是我换成string filepath=Server.MapPath("file/"+Path.GetFileName(fileup.PostedFile.FileName)); 也是不对的,因为 这个获取的返回与Web服务器上指定虚拟路径相对应的绝对路径 , 我道理应该怎么才能让上传本地文件到服务器? 网站是部署在远程服务器上的。 以前好像写asp 的时候有个组件之间上传的,asp。net 应该也有相关的组件,但是不通过组件可以上传吗?

解决方案 »

  1.   

    ok ,可以了 ,我在网上找到这样一段,可以实现我的目的,            //Server.MapPath返回与Web服务器上指定虚拟路径相对应的绝对路径 
               string filepath=Server.MapPath("file/"+Path.GetFileName(fileup.PostedFile.FileName));
                // Path.GetFileName返回指定路径字符串的文件名和扩展名
                string img="file/"+Path.GetFileName(fileup.PostedFile.FileName);//用于保存到数据库中的上传文件URL路径
               int ij= img.LastIndexOf("."); //取得文件扩展名
               if(ij>0)
               {
                      string newext =img.Substring(ij).ToLower();//将文件扩展名转换为小写
                       if(newext!=".htm" &&  newext!=".html" &&  newext!=".doc" && newext!=".xls" && newext!=".ppt"  && newext!=".txt"
                    &&  newext!=".bmp" && newext!=".jpg" && newext!=".jpeg" && newext!=".gif")
                        {
                 Response.Write("对不起,文件类型不符,不能上传。                                                                                    上传文件扩展必须为(.htm/.html/.doc/.xls/.ppt/.txt/.bmp/.jpg/jpeg/gif) ");
                 return;
                                }
                        }
                      else
                        {
                              Response.Write("对不起,上传文件失败?找不到文件?");
                              return;
                        }
                      
                if(fileup.PostedFile.ContentLength>5242880) //获取上载文件的字节大小
                {
                    Response.Write("对不起,文件太大,不能上传。上传文件不能大于5M ");
                    return;
                }
                if(File.Exists(filepath)) //确定指定的文件是否存在
                {
                    Response.Write(" 对不起,您要上传的文件名与系统数据库中的文件重名,不能上传? ");
                    return;
                }
                if(fileup.PostedFile!=null)//判断控件是否已选定了文件的名称和扩展名
                {
                    try
                    {
                      fileup.PostedFile.SaveAs(filepath);//将文件上传到服务器
                        //FileInfo fil;//提供创建、复制、删除、移动和打开文件的实例方法,并且帮助创建 FileStream 对象。
                        //fil=new FileInfo(filepath);//获取文件名称
                        //fil.Delete();//永久删除文件
                     }
                   catch
                   {
                      Response.Write("对不起,上传文件失败?请选择要上传的文件?" );
                      return;
                    }
                }
    跟大家分享一下