在局域网中另一台机器上访问自己发布的jsp网页,上传图片出现问题!!!

在我自己的电脑上运行jsp程序都正确。现在我在局域网中另一台机器上访问自己发布的jsp网页能上传文字数字灯数据。但是上传图片时提示java.io.FileNotFound... 在我自己的电脑上运行jsp程序都正确。现在我在局域网中另一台机器上访问自己发布的jsp网页能上传文字数字灯数据。但是上传图片时提示java.io.FileNotFoundException:D:\img\a.jpg (系统找不到指定的路径。)
请问是怎么回事啊?
展开
 我来答
小屠户
2013-05-10 · TA获得超过383个赞
知道小有建树答主
回答量:329
采纳率:100%
帮助的人:225万
展开全部
当你用另一台访(客户端)问服务器资源的时候,默认的是在你所谓的另一台电脑(客户端)上寻找D:\img\a.jpg的,然而在客户端并没有此文件,所以会爆出这样的错误!
下面是我以前总结过的,希望能帮到你:
网站发布到服务器之后,客户端(别人的机器)访问你发布的网站的时候,图片显示不出来,或者连接的时候找不到资源,但是在本地测试时一切正常。尤其是涉及到图片上传这一功能模块,经常遇到这样的问题。那么是什么原因造成的呢?可想而知,你在开发的时候肯定会想办法解决图片的路径问题,jsp中src到底是用相对路径还是绝对路径,大多数人会选择绝对路径(当然无论你此时选择什么样的路径,也照样会出像这样的问题),你可能认为只要我知道那个图片的绝对路径,我就一定能够把图片显示出来。但是如果客户端(别人的机器)访问服务器(你的机器),默认也会去客户端机器上的那个绝对路径去读文件,但是那个文件并不在客户端上边,所以会出现不能正常显示的问题。那么该怎么解决这一问题呢?很简单:做一个调整。我们可以在服务器上传时,保存工程和图片文件所构成的一组路径(/工程名/文件名)
然后,我们在显示的时候,通过
String path =request.getContextPath();
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
这两句得到每个客户端访问图片的前端路径basepath,然后basePath +(/工程名/文件名)就能够正确的访问图片了。。。
更多追问追答
追问
你好,我是以二进制形式上传图片到SQL SERVER 2005数据库里,并没有上传和保存图片的路径。如果是这个问题,怎么解决啊?
追答
java.io.FileNotFoundException:D:\img\a.jpg
这是你 在客户端的上传路径么?
百度网友5a74a22
2013-05-10 · TA获得超过130个赞
知道答主
回答量:49
采纳率:0%
帮助的人:40.7万
展开全部
客户端是不能访问服务端的非web应用路径里的东西的。
假如可以 那客户端岂不是可以随意查看你电脑里面的东西了?

解决方法很简单, 上传图片的路径换成相对路径 保存在 webroot下面

这样你在别人电脑上才能下载你的发布的web应用里面的东西
更多追问追答
追问
你好,我是以二进制形式上传图片到SQL SERVER 2005数据库里,并没有上传和保存图片的路径。这样的上传问题怎么解决啊?
追答
你把数据库里的文档内容(二进制码)取出来的时候 有没有做过处理。比如用文件输出流输出到D:\img\a.jpg   我之前也说了,客户端是不能访问非web应用下面的目录的。
劝你把 输出路径换成 web应用下的路径

File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/")
+"file/" +uploadFilename);


这个就是保存在你web应用的路径下的file文件里的语句 你可以参考一下 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式