目前做的是ASP.NET的项目.
我的服务器放在C盘中的WWWROTE中,但是我所有的上传文件都是放在该服务器地址的D盘中的某个文件夹中.
我想怎么才能把文件上传到服务器中的D盘文件夹中呢,(直接postedFile.SaveAs(@"D:/Fujian"+fileName))????这样的话我在本机测试是可以的,因为这是自己的一个练习项目.自我感觉对这个路径有点置疑.但是我又不知道怎么去取服务器中的D盘的文件夹.请高手帮帮忙.
补充说明:
     我的数据库设计的只是文件名,和它的路径.新增一个附件,我要求是自动保存到服务器中的D盘中.,不需要用到二进制流来写入到数据库中,只需要保存它相对与服务器的路径就可以了(这里的路径也有点不明白,还是D:/Fujian"+fileName?????)另外我从GridVIEW中双击某行时候,如何模拟弹出一个下载对话框.我直接给他Window.open("路径");
请高手给点思路,或者原代码,非常感谢!

解决方案 »

  1.   

        public bool picAdd()
        {
            connection conn = new connection();
            SqlConnection con = conn.con1();   
            if (FileUpload1.HasFile)//如果添加文件存在
            {
                string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower();//文件扩展名
                string[] arr ={ ".gif", ".bmp", ".jpg", ".jpeg", ".tiff" };
                for (int i = 0; i < arr.Length; i++)
                {
                    if (fileExtension == arr[i])
                    {
                            string path = Server.MapPath("image/");//服务器路径
                            FileUpload1.SaveAs(path + FileUpload1.FileName);//将图片存放于服务器指定位置
                            return true;//以上能完成说明图片上传成功
                    }
                }
                return false;
            }
            else
                return false;//没有上传图片
        }
    这是直接将图片放到网站内的文件夹内,数据库保存相对路径
      

  2.   

            connection conn = new connection();
            SqlConnection con = conn.con1();
    是链接数据库网站存放图片的文件夹叫“image”
      

  3.   

    Server.MapPath("image/");//服务器路径
    你这个好象是保存在项目中的Image文件夹中的.我的意思是怎么保存到项目的服务器中的D盘的某个文件夹
    就是不理解这个意思,在帮我想想
      

  4.   

    另外我从GridVIEW中双击某行时候,如何模拟弹出一个下载对话框.我直接给他Window.open("路径"); 
    ====
    下载什么?这个“路径“是指什么路径?
      

  5.   

    我感觉还是相对路径比较好一些,这样程序出现不了错误。
    如果非要保存在一个固定的位置,你可以先指定这个位置,如果这个位置不存在的话,给他创建,如:
    保存之前:
    string filepath="D:\\Fujian";
    if (!System.IO.Directory.Exists(filepath))
                {
                    System.IO.Directory.CreateDirectory(filepath);
                }
    创建万这个路径之后:
    FileUpload.PostedFile.SaveAs(filepath+ "\\" + filename);
      

  6.   

    这个路径是从数据库中取出来,这个其实没关系,主要是上面那个问题.
    比如我有个项目为名为Test放在D盘的Text文件夹中.但是我上传的时候是要把它上传到该服务器中的D盘的另外一个文件夹中如FUJIAN中.
    当然如果我把这个FUJIAN文件夹放在d:\Text项目文件夹下这样就没问题.直接this.Server.MapPath("")就可以了.
    问题是需求上所有的上传的附件不是放在项目文件中.
    UP
      

  7.   

    try
            {
            HttpPostedFile f = null;
    for ( int i = 0;i < this.Request.Files.Count;i++)
     {
    f = this.Request.Files[i];
    f.SaveAs(你的服务器存储路径 + f.FileName);
     }
            }
            catch (Exception err)
            {
                this.Label1.Visible = true;
                this.Label1.Text += err.Message;
            }
      

  8.   

    对zhuanshen712 string   filepath="D:\\Fujian"; 
    if   (!System.IO.Directory.Exists(filepath)) 
                            { 
                                    System.IO.Directory.CreateDirectory(filepath); 
                            } 
    创建万这个路径之后: 
    FileUpload.PostedFile.SaveAs(filepath+   "\\"   +   filename);这个我也不知道,我就是不理解,他创建的这个文件夹后是属于服务器中,还是保存在当前本机中呢.
    请详细解剖下.
    如果是在服务器中的话,我应该怎么去根据该路径进行下载.因为数据库中没有用二进制流来上传,只保存了这个路径而已.
      

  9.   

    第二个问题:你的方案有如下风险:需要客户取消掉“弹出窗口”拦截方式
    建议使用LinkField 使用target="_blank"就不存在这些问题,还会流畅很多。
      

  10.   

    这个当然是保存在服务器中了,当然如果你做开发的话,那么就会保存在你本机中的,因为你本机就是服务器啊。
    ===================
    楼主自己想一想,如果用户上传一个保存在本机中,且不说这个上传有没有必要,如果别人下载的时候都要连接这个用户的机器吗?不可能吧?
    ===================
    正常情况下,文件的保存都是保存在服务器上,数据库里面只保存文件路径,所以说你做的思路还是正确的。至于怎么下载,无非是根据路径下载了。看你数据库保存路径是怎么保存的,如果就是绝对的物理路径,那么这个可以直接用。如果是相对路径的话,就要MapPath()一下了。
      

  11.   

    难道是我多想了,想太多了,搞混淆了啊!!!
    明天得找个外网试试.
    继续讨论下载问题
    路径绝对正确.
    就是双击GRIDVIEW时候如何提示下载该文件!~!!
      

  12.   

    文件一般都是保存在服务器上,数据库里面只保存文件路径。
    我写的上创图片的代码,图片保存在服务器上,而路径就写到数据库去.//
    //上传相关楼层图片
    //
    private void btn_ul_Click(object sender, System.EventArgs e)
    {
    if (this.f_glance.PostedFile.ContentLength != 0)
    {
    if((f_glance.PostedFile.ContentLength > 0)&&(f_glance.Value.ToString() != ""))
    {
    if(f_glance.PostedFile.ContentLength>=4000000)
    {
    MsgBox("文件超出指定大小,请分割后上传!");
    return;
    } //得到上传文件的文件名
    string filename=Path.GetFileName(f_glance.PostedFile.FileName);
    //得到后缀名
    string fileExt="";
    int n=filename.LastIndexOf(".");
    if(n<0)
    {
    fileExt="";
    }
    else
    {
    fileExt=filename.Substring(n);
    }
    //检查文件的后缀名
    int extIndex=Array.IndexOf(upLoadFileExts,fileExt.ToLower());
    if(extIndex==-1)
    {
    MsgBox("请上传图片类型文件!");
    return;
    } String fileName = f_glance.PostedFile.FileName.Substring(f_glance.PostedFile.FileName.LastIndexOf("\\"),
    f_glance.PostedFile.FileName.Length - f_glance.PostedFile.FileName.LastIndexOf("\\")); String fileTime = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() 
    + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() 
    + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString()
    + DateTime.Now.Millisecond.ToString(); fileName = "\\" + fileTime + GetRandomint() + fileName.Substring(fileName.IndexOf("."),fileName.Length - fileName.IndexOf("."));
    if(File.Exists(Server.MapPath(Request.ApplicationPath) + "\\picture" + fileName) == false)
    {
    try

    string link=Server.MapPath(Request.ApplicationPath) + "\\picture" + fileName;
    f_glance.PostedFile.SaveAs(link);
    string picturelink=Server.MapPath(Request.ApplicationPath) + "\\picture" + fileName;
    lab_img.Text="<img id='img_layer' src='"+picturelink+"'  Width='500px' Height='250px' />";
    lbl_link.Text=fileName;
    MsgBox("图片上传成功!");
    }
    catch(Exception ex)
    {
    MsgBox("由于网络原因,上载文件错误  " + ex.Message);
    }
    }
    else
    {
    MsgBox("你上载文件的文件名称已经存在,请更改你的文件名称!");
    return;
    }
    }
    else
    {
    MsgBox("文件的内容不能为空!");
    return;
    }
    }
    else
    {
    MsgBox("文件的名称不能为空!");
    }
    } private String GetRandomint()
    {
    Random random = new Random();
    return(random.Next(10000).ToString());
    }    
      

  13.   

    其实你们还没理解我的意思啦
    我要下载的文件不在项目的那个文件夹下,
    插入的时候是用的如D:\fujian\aa.txt到数据库的.但是如果不插入这个路径的话,
    我不知道到底该插入什么样的路径了,
    如果我把fujian这个文件夹放到项目服务器文件夹中的话,用server,mapPath可以取出来下载,现在就是D:\fujian\aa.txt不知道怎么下载.他只能右键另存为来实现下载.但是我又要实现双击GridView实现下载,所以搞不定了,请大家仔细想想.
    当然
    fujian文件夹放到项目服务器文件夹中的话,一点问题都没有.
    就是需求要把他放在指定的D盘,这样后我就搞糊涂了!大家在仔细想想