问题描述:现有三台电脑A、B、C,A是用来进行开发WEB程序,B是WEB服务器,C是一台客户端。要实现的功能为:在本地机上通过HTML的Input控件选择本地的一图片位置,然后将该图片读成二进制文件保存到数据库中(假设为D电脑),我在A电脑中代码如下:
if (this.Input.PostedFile.FileName != "")
{
System.IO.FileInfo objfile = new System.IO.FileInfo(this.Input.PostedFile.FileName);
string picfileurl = objfile.FullName;
  if (picfileurl != "")
     {
byte[] blob = GetBinaryFile(picfileurl);
//GetBinaryFile是把文件变成二进制的一个函数
         //这个函数包含了一个如下判断文件是否存在的函数:File.Exists(FileName)

     }
}
这样开发完毕后,我发现在自己的电脑上运行正常,但是当我将这些程序发布到WEB服务器B上的时候,从客户端电脑C进行访问B上我的程序的时候,问题出现了:不能正常工作。我分析了一下原因:当在C上访问B上程序的时候,C以B的身份在运行程序,而使用Input控件获取的文件地址是C上的路径,而这个路径在B上并不存在,所以也就找不到这个文件,程序就不能正常。
我的要求是如何能够获取到本地的路径也就是C上的文件地址将其上传,帮帮忙吧

解决方案 »

  1.   

    晕,说了一大堆。可能时你的WEB服务器那个存文件的文件夹没权限吧!
      

  2.   

    你得函数写的就有问题,首先要把上传上来的文件保存在服务器上,
    然后才能对文件进行读取等操作string sPath=你要保存到服务器上的路径+文件名、;
    if (this.Input.PostedFile.FileName != "")
    {this.Input.PostedFile.SaveAs(sPath);
    System.IO.FileInfo objfile = new System.IO.FileInfo(sPath);
    string picfileurl = objfile.FullName;
      if (picfileurl != "")
         {
    byte[] blob = GetBinaryFile(picfileurl);
    //GetBinaryFile是把文件变成二进制的一个函数
             //这个函数包含了一个如下判断文件是否存在的函数:File.Exists(FileName)

         }
    }
      

  3.   

    我在C上运行,调用Input控件的时候获取的路径是在C上的本地文件阿,但当我引用B上的页面的时候,自然的会按照这个路径在B上找文件,B上没有肯定会出错阿。我现在就是想把c上的本地文件获取到,读成二进制文件,然后保存到数据库中的blob字段中。
    有两个问题啊:
    this.Input.PostedFile.SaveAs(sPath),这句话干什么呢
    怎么把文件上船到服务器,我就是连本地文件都不能获取阿
      

  4.   

    应用程是在后台与运行的,读取不到客户端的文件,只有上传到服务器上才行
    this.Input.PostedFile.SaveAs(sPath),就是把客户端的文件保存到服务器上
      

  5.   

    this.Input.PostedFile.SaveAs(sPath)//将选定的文件保存到服务器
      

  6.   

    sPath这个的路径格式是C:\tmp\tem.doc还是file:\\\C:\tmp\tem.doc,这种格式就把我搞晕了。
      

  7.   

    谢谢几位,上传文件的问题已经解决。现在遇到的问题是:
    1、怎样把文件读取到本地电脑呢,我读的时候总是读到服务器上;
    2、如果不用这个Input怎么样才能把文件上传到服务器上,然后进行操作?
      

  8.   

    to moodboy1982(自由人):
    客户端插件,能说得具体些吗?