java图片路径问题
byte[]b=dept.getImage();Stringtxt="111.png";OutputStreamout=newBufferedOutputStream(n...
byte[] b = dept.getImage();
String txt = "111.png";
OutputStream out = new BufferedOutputStream(new FileOutputStream(txt));
out.write(b);
out.flush();
out.close();
return "success";
我在jsp页面用<img src="111.png" />读取从数据库大字段里处理出来的图片,可是在页面上没有显示,并且在项目下也找不到新建出来的111.png文件如果把路径改成"/imageFolder/111.png"(imageFolder在WebRoot下)又报错——java.io.FileNotFoundException: \imageFolder\111.png (系统找不到指定的路径。)
我在把输出流的路径设置为
byte[] b = dept.getImage();
File str = new File("../webapps/login_demo/imageFolder");
if(!str.exists()){
str.mkdirs();
}
File txt = new File("../webapps/login_demo/imageFolder/111.png");
if(!txt.exists()){
txt.createNewFile();
}
OutputStream out = new BufferedOutputStream(new FileOutputStream(txt));
out.write(b);
页面改成
<img src="../imageFolder/111.png"/>
这次能正常跳转页面了,但是创建出来的图片以及路径没有看到(已经把imageFolder文件夹删了)
我去tomcat下看过路径了,在项目下已经生成了文件夹和图片,但是页面就是显示不了。页面的路径该怎么写?如果我的输出流想写个相对路径,还是在项目的目录下该怎么写 展开
String txt = "111.png";
OutputStream out = new BufferedOutputStream(new FileOutputStream(txt));
out.write(b);
out.flush();
out.close();
return "success";
我在jsp页面用<img src="111.png" />读取从数据库大字段里处理出来的图片,可是在页面上没有显示,并且在项目下也找不到新建出来的111.png文件如果把路径改成"/imageFolder/111.png"(imageFolder在WebRoot下)又报错——java.io.FileNotFoundException: \imageFolder\111.png (系统找不到指定的路径。)
我在把输出流的路径设置为
byte[] b = dept.getImage();
File str = new File("../webapps/login_demo/imageFolder");
if(!str.exists()){
str.mkdirs();
}
File txt = new File("../webapps/login_demo/imageFolder/111.png");
if(!txt.exists()){
txt.createNewFile();
}
OutputStream out = new BufferedOutputStream(new FileOutputStream(txt));
out.write(b);
页面改成
<img src="../imageFolder/111.png"/>
这次能正常跳转页面了,但是创建出来的图片以及路径没有看到(已经把imageFolder文件夹删了)
我去tomcat下看过路径了,在项目下已经生成了文件夹和图片,但是页面就是显示不了。页面的路径该怎么写?如果我的输出流想写个相对路径,还是在项目的目录下该怎么写 展开
6个回答
展开全部
<img src="111.png" /> 引用的是同一目录下的,你上面那段代码根本就没输出到那个目录当然找不到了。 对于一个项目来说图片有个专有的文件夹存放,比如在WebRoot的imageFolder下,那么你在输出流写图片的时候要指定好这个相对路径,然后页面上用<img src="../imageFolder/111.png" />
通常来说解决方案是这样的:以一个图片上传的例子为例,首先会在xml文件中配置好上传文件的绝对路径(例如C:/XXDX/XX这样,将来部署到服务器上时,修改配置文件路径就好了)然后比如我们上传的图片都是用输入流写到xx/xx/war/upload中 (我看你后增加的代码中没有flush(),是不对的) 然后在页面jsp中用/upload/xxx.png取值,之所以这么取是因为“/”是war根目录,当然你要是用"../"那种方式你要查明白你现在的目录级别。
通常来说解决方案是这样的:以一个图片上传的例子为例,首先会在xml文件中配置好上传文件的绝对路径(例如C:/XXDX/XX这样,将来部署到服务器上时,修改配置文件路径就好了)然后比如我们上传的图片都是用输入流写到xx/xx/war/upload中 (我看你后增加的代码中没有flush(),是不对的) 然后在页面jsp中用/upload/xxx.png取值,之所以这么取是因为“/”是war根目录,当然你要是用"../"那种方式你要查明白你现在的目录级别。
展开全部
到底在什么路径下你自己应该清楚,我只能告诉你前面不要乱加 /
最前面加 / 表示根路径,不加的话是相对路径,或者最前面是 . .. 这样的也是相对路径。
imageFolder/111.png
./imageFolder/111.png
都表示当前目录下 imageFolder 文件夹下的 111.png
../imageFolder/111.png
表示在上级目录下的 imageFolder 文件夹下的 111.png
再比如:
../../../imageFolder/111.png
就可以往后退好几层文件夹
最前面加 / 表示根路径,不加的话是相对路径,或者最前面是 . .. 这样的也是相对路径。
imageFolder/111.png
./imageFolder/111.png
都表示当前目录下 imageFolder 文件夹下的 111.png
../imageFolder/111.png
表示在上级目录下的 imageFolder 文件夹下的 111.png
再比如:
../../../imageFolder/111.png
就可以往后退好几层文件夹
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用System.getProperty("user.dir")+"相对的路径" 即可, 或者直接 getInstance("images/image-left.jpg");试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是跑到\WEB-INF\classes\目录下了。
改成这样试下:
String txt = "../imageFolder/111.png";
改成这样试下:
String txt = "../imageFolder/111.png";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询