日期:2014-05-18  浏览次数:20374 次

上传图片取虚拟路径的问题
我上传图片的方法这样写的:
protected   void   Upload_Click(object   sender,   ImageClickEventArgs   e)
        {
                HttpFileCollection   _files   =   System.Web.HttpContext.Current.Request.Files;

                for   (int   i   =   0;   i   <   _files.Count;   i++)
                {
                        _files[i].SaveAs(Server.MapPath( "~/Files/ "   +   _files[i].FileName));
                }
        }


出错了:
文件名、目录名或卷标语法不正确。

说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.IO.IOException:   文件名、目录名或卷标语法不正确。

这文件保存在哪呢?
请问我怎么在数据库里存虚拟路径,然后又怎么取出来呢?

------解决方案--------------------
你先读出来,

string path=ds.Tables[0].Rows[0][ "path "].toString();

files[i].SaveAs(Server.MapPath( path+ + _files[i].FileName));

不就OK ,

------解决方案--------------------
你把你那个设置的虚拟路径打出来看看是不是你指定的虚拟路径目录。
------解决方案--------------------
是不是你的文件名里面有非法字符
把Server.MapPath( "~/Files/ " + _files[i].FileName) 这个取出来看看是什么


------解决方案--------------------
files[i].FileName有问题,包含了本地路径,用
SubString LastIndex来处理,只取最后一个斜杠后面的名字
------解决方案--------------------
.FileName属性得到的是客户端完全路径,当让不能直接用于服务器端路径了
------解决方案--------------------
_files[i].SaveAs(Server.MapPath( "..\\Files\\ " + _files[i].FileName));
------解决方案--------------------
MARK
------解决方案--------------------
string name = FileUpload1.PostedFile.FileName; // 客户端文件路径
FileInfo file = new FileInfo(name);
string fileName = file.Name;
string mappath = Server.MapPath( "~/Files/ " + fileName);
------解决方案--------------------
同意楼上。佩服artak(甜葡萄)
------解决方案--------------------
Server.MapPath( "~/Files/ " + _files[i].FileName)都不存在这个文件怎么取得其文件名呢?你可以Server.MapPath( "~/Files/ ") + _files[i].FileName 就可以了。试一下

~_~!~_~!~_~!~_~!~_~!~_~!~_~!~_~!~_~!
我的E-Mail:bdbox@163.com 请多指教!
------解决方案--------------------
_files[i].SaveAs(Server.MapPath( "~/Files/ ") + _files[i].FileName);
------解决方案--------------------
用MapPath取出实际路径!
------解决方案--------------------
Server.MapPath( "Files/ ")+_file[i].FileName