问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Data;publicpartialclassadmin_add:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){if(!Page.IsPostBack){databinds();}}publicvoiddatabinds(){DataTabledt=newphoto().getAllPicType().Tables[0];this.dropdownlists.DataSource=dt;this.dropdownlists.DataTextField="typeName";this.dropdownlists.DataValueField="id";this.dropdownlists.DataBind();}protectedvoidbtnadd_Click(objectsender,EventArgse){//stringid=newRandom().Next(1,1000).ToString();//将附件传送到服务器上stringpath=FileUpload1.PostedFile.FileName.ToString();//获取上传图片路径stringext=path.Substring(path.LastIndexOf(".")+1);//获取图片扩展名if(ext.ToLower()=="jpg"||ext.ToLower()=="bmp"||ext.ToLower()=="gif"||ext.ToLower()=="png"||ext.ToLower()=="tif"||ext.ToLower()=="jpeg"){stringphototitle=this.txttitle.Text.ToString();stringphotocontent=this.txtcontent.Text.ToString();stringwPath="../upload/"+path;stringsPath=Server.MapPath("../upload/"+path);//设置图片保存到服务器上路径stringsuoPath=Server.MapPath("../suo/")+path;//path="..\Photo\"+PhotoID+"."+ext;//保存到数据库中路径FileUpload1.PostedFile.SaveAs(sPath);//保存到服务器stringurlPath=wPath;stringphotoUser="admin";stringtime=DateTime.Now.ToString();inttype=Convert.ToInt32(this.dropdownlists.SelectedValue.ToString());intcount=newphoto().addpic(phototitle,type,path,photocontent,photoUser,time);if(count>0){PictureSlightly.MakeImage(sPath,suoPath,100,100,"hw");this.Page.ClientScript.RegisterStartupScript(this.GetType(),null,"<script>alert('添加成功!');</script>");}else{this.Page.ClientScript.RegisterStartupScript(this.GetType(),null,"<script>alert('添加失败!');</script>");}}else{this.Page.ClientScript.RegisterStartupScript(this.GetType(),null,"<script>alert('只能上传图片!');</script>");}}}提示不是有效的虚拟路径怎么解决?
解决方案
解决方案二:
你不先看看你的path值是多少,至少在IE678中PostedFile.FileName返回的值是客户端包含完整路径的文件名,如C:\Test\p.png,这样的话,"../upload/"+path成什么了?你的程序,在Firefox下倒是能正常运行,Firefox只会返回p.png。
解决方案三:
“/web”应用程序中的服务器错误。未能找到路径“E:webadminuploadp_large_TEyO_4025000e38365c43.jpg”的一部分。说明:执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.IO.DirectoryNotFoundException:未能找到路径“E:webadminuploadp_large_TEyO_4025000e38365c43.jpg”的一部分。源错误:行38:stringsuoPath=Server.MapPath("../suo/")+path;行39://path="..\Photo\"+PhotoID+"."+ext;//保存到数据库中路径行40:FileUpload1.PostedFile.SaveAs(sPath);//保存到服务器行41:stringurlPath=wPath;行42:stringphotoUser="admin";源文件:e:webadminadd.aspx.cs行:40堆栈跟踪:[DirectoryNotFoundException:未能找到路径“E:webadminuploadp_large_TEyO_4025000e38365c43.jpg”的一部分。]System.IO.__Error.WinIOError(Int32errorCode,StringmaybeFullPath)+193System.IO.FileStream.Init(Stringpath,FileModemode,FileAccessaccess,Int32rights,BooleanuseRights,FileShareshare,Int32bufferSize,FileOptionsoptions,SECURITY_ATTRIBUTESsecAttrs,StringmsgPath,BooleanbFromProxy)+1162System.IO.FileStream..ctor(Stringpath,FileModemode,FileAccessaccess,FileShareshare,Int32bufferSize,FileOptionsoptions,StringmsgPath,BooleanbFromProxy)+61System.IO.FileStream..ctor(Stringpath,FileModemode)+55System.Web.HttpPostedFile.SaveAs(Stringfilename)+95admin_add.btnadd_Click(Objectsender,EventArgse)ine:webadminadd.aspx.cs:40System.Web.UI.WebControls.Button.OnClick(EventArgse)+78System.Web.UI.WebControls.Button.RaisePostBackEvent(StringeventArgument)+100System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(StringeventArgument)+10System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandlersourceControl,StringeventArgument)+13System.Web.UI.Page.RaisePostBackEvent(NameValueCollectionpostData)+36System.Web.UI.Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+2859版本信息:Microsoft.NETFramework版本:2.0.50727.4963;ASP.NET版本:2.0.50727.4955
解决方案四:
未能找到路径“E:webadminuploadQQ截图20110504223614.png”的一部分。
解决方案五:
引用1楼orain的回复:
你不先看看你的path值是多少,至少在IE678中PostedFile.FileName返回的值是客户端包含完整路径的文件名,如C:\Test\p.png,这样的话,"../upload/"+path成什么了?你的程序,在Firefox下倒是能正常运行,Firefox只会返回p.png。
+楼主你把路径输出出来不久知道是哪里写错了吗?。很简单
解决方案六:
不会你的按个目录的权限不够吧,就是访问web的用户连那个目录read的权限都没有