在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。
我使用UUID生成8级目录,在webapp下创建目录,将图片传进去。目录始终无法创建的原因是项目默认在图片上传成功后,上传到了发布路径下,({workspace}.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\project_upload)而不是开发路径中。
解决方案:更改Tomcat服务器,使其目录生成到开发路径,重新发布项目,执行后,即可生成目录。
本来以为出来目录就好了,结果做测试时当上传图片时第一次会创建一个目录(如上图),再之后不管怎么上传图片都不会创建目录,但是controller里的代码是正确的,目录会正确创建,只是不会在webapp下生成目录。
错误原因:后来我在controller中输出System.getProperty(“user.dir”),发现它的当前工作目录是F:\eclipse,在eclipse中真的发现了之前创建的目录。
而我在src/test/java中写的测试代码显示当前工作目录是当前项目的路径
解决方案:点击项目>右键>Run as > Run Configurations,发现Java Application的工作路径为${workspace_loc:ueas}
而Tomcat的工作路径为F:eclipse,终于找到了错误之处。
解决方案:将Tomcat的Arguments改为项目路径即可。
图片上传之后如果页面不显示图片,只有刷新项目后才显示图片。这是因为图片是上传到tomcat容器那个部署的工程目录下,eclipse会有自己的workspace这个跟工程的部署目录路径是不一样的,你的图片是不会自动上传到eclipse下的,之所以刷新会有,这只不过是eclipse从部署目录下同步过来。所以将项目添加到tomcat的目录下即可。
但是上述步骤还是会出现问题,在图片上传后必须手动刷新一下页面图片才会显示,所以路径还是有问题,后来我又了利用另外一方法,直接取tomcat的工作路径,就不用配置那些东西来凑tomcat工作路径。
使用String path = req.getSession().getServletContext().getRealPath("/upload");来获取tomcat工作路径。
这样图片就可以自动上传了而不需要再手动刷新。
这样又出现了新的问题,图片上传后是保存在tomcat的webapp下,当重启tomcat后图片就会被清除,这样就页面在重启后就不会显示图片了;
解决方案:在server.xml中配置存储路径,将其存储位置固定,这样重启tomcat就不会被清除其webapp下的图片。
【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。
最新推荐文章于 2024-07-25 11:34:42 发布