上传图片提示不是有效的虚拟路径 怎么解决?

问题描述

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的权限都没有

时间: 2024-10-27 13:52:44

上传图片提示不是有效的虚拟路径 怎么解决?的相关文章

asp上传图片提示 ADODB.Stream 错误 &#039;800a0bbc&#039;的解决方法

  asp上传图片提示 ADODB.Stream 错误 '800a0bbc' 有这个提示有很多问题导致.权限是常见一种.这个不多说,还有一个有点怪的就是 windows2008显示系统时间的格式竟然是:2013/3/8,而并非是以前的2013-3-8,由于重命名上传的文件是按时间来命名的,本要求为201338,但到windows2008平台上最后变成了2013/3/8,这样则会有一个问题,就是会被当成文件夹和路径处理,最终会导致了真正的不存在目录,最后会写入出错. 解决办法: 经过查看在上传保存

tomcat 配置图片虚拟路径不起作用

最近在做一个小项目,用到了图片上传服务器,以前尝试过实现这个功能Demo,虽然基本功能没有问题,但是很不完善,当时也有在博客记录,地址如下: http://blog.csdn.net/weixin_36380516/article/details/58594664 由于当时写这个图片上传服务器的功能只是为了练练手,简单的实现后便没有再去管,后来经过道友提醒,图片上传路径不能放置在eclipse的工程目录下,否则后期部署会有很大的不方便,而且每次图片上传结束后,都要刷新eclipse下的工程才能显

tomcat部署到阿里云服务器,虚拟路径启动有问题

问题描述 tomcat部署到阿里云服务器,虚拟路径启动有问题 server.xml同样的配置在本地可以跑,但是放到阿里云就启动不了,报: SEVERE: Error starting static Resources java.lang.IllegalArgumentException: Document base /test does not exist or is not a readable directory server.xml去掉了项目路径而已: <Host name="loc

新手请教虚拟路径

问题描述 我之前新建了个虚拟路径,可以打开程序...由于需要,我将虚拟路径所指的位置更改,并将程序转移至该路径...结果总是提示无法打开程序,路经不一致.是怎么回事?后来我重装IIS.结果再次用.net2003打开的时候要我选择文件地址,我便把选择了新的路径..虽然程序能够打开了,但是用.net直接编译运行,地址栏的地址和我配置的路径不一样,会有自动生成的字符串戴上...怎么解决.怎样将原先设置好的虚拟路径转到其它地方?? 解决方案 解决方案二:2003配置比较麻烦,不过我找到一个方法,你也可以

C# 操作iis创建虚拟目录与虚拟路径方法

在.Net中我们可以使用内置的类DirectoryEntry来承载IIS服务器中的任何网站,虚拟路径或应用程序池对象,例如:   DirectoryEntry ent = new DirectoryEntry("IIS://localhost/w3svc/1/root"): 就创建了一个IIS路径为IIS://localhost/w3svc/1/root的虚拟路径对象.   为了在IIS中创建一个网站,我们首先需要确定输入的网站路径在IIS中是否存在,这里主要是根据网站在IIS中的 S

ASP.NET将Web站点下的绝对路径转换为虚拟路径

asp.net|web|站点|转换 很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法,今天借着项目应用到的机会写了两个将绝对路径转换为虚拟路径封装好的方法将Web站点下的绝对路径转换为相对于指定页面的虚拟路径/**//// <summary>/// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径/// </summary>/// <param name="page">当前页面指针,一般为this</param>///

Win7系统提示"无法复制,文件路径太深"怎么办?

Win7系统提示"无法复制,文件路径太深"怎么办?   原因一:USB设备问题,于其制作原理不无关系. 解决方法: 方法1:安全退出U盘,安全退出后,将U盘从电脑USB接口上拔下来,再将U盘插入电脑,进行数据备份操作. 方法2:如果方法1操作后,还是出现此问题,那么就需要再次安全退出U盘,将U盘拔下来,插入电脑时,换别的USB接口,在进行数据备份操作. 原因二:当电脑或U盘中了病毒木马时,也是会出现"无法复制 路径太深"的情况. 解决方法:使用杀毒杀木马软件对电脑和U盘进行全盘扫描,不

Linux和window下tomcat虚拟路径的配置方式

             配置Linux下tomcat虚拟路径: 找到linux下的server.xml文件,在<Host>标签内进行如下配置 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="f

java ee-tomcat:配置servlet程序的虚拟路径映射

问题描述 tomcat:配置servlet程序的虚拟路径映射 如题. 我写了个servlet测试程序,然后想要把它映射到一个虚拟路径,比如**localhost/index.html**,然后我用浏览器访问这个路径时,调用我的那个servlet程序. 我用eclipse for java ee向导创建的可以访问,但是访问的只能是这个**servlet类名**,我想改servlet的映射路径,该怎么设置,(_已经把项目目录设置到主机根目录下了_) 解决方案 在web.xml里配置 testserv