关于springmvc的UUID文件无法读取的问题

今天学习springmvc上传图片时,遇到了UUID图片无法读取的问题(404错误):

根据网上流程:先配置好虚拟目录和springmvc.xml的文件上传,再写好控制器和页面,最后结果如下所示

环境:MyEclipse2017,使用的是自带的tomcat

另外:以下问题只针对myeclipse自带的tomcat,我在装了本地tomcat以后,测试发现没有出现以下问题

如下所示: server.xml

<Context docBase="E:\Java_pic" path="/pic" reloadable="false"></Context>

控制器:(使用UUID重新存储文件名)

    //上传图片
    if(items_pic!=null){
	//存储图片的物理路径
	String pic_path="E:\\Java_pic\\";
	//原始名称
	String originalFilename=items_pic.getOriginalFilename();
	//新图片名称
        StringnewFileName=UUID.randomUUID()+
                originalFilename.substring(originalFilename.lastIndexOf("."));
	//新图片
	File newFile=new File(pic_path+newFileName);
	//将内存中的数据写入磁盘
	items_pic.transferTo(newFile);
	//在itemsCustom中添加pic的路径
	//添加的是虚拟路径
	String virtualPath=newFileName;
	itemsCustom.setPic(virtualPath);
    }

页面

<tr>
    <td>图片</td>
    <td>
    	<c:if test="${items.pic!=null }">
    	    <img src="/pic/${items.pic }" width=100 height=100/>
    	    <br/>
        </c:if>
    	<input type="file" name="items_pic"/>
    </td>
</tr>

 

但是最终点击提交以后,页面中的img位置有填充,但是并没有显示出图片,数据库中有图片名,虚拟目录对应的物理路径下也有图片,点击查看图片,报错404,

当时这个问题调试了很长时间,最后发现是在写这段代码中间重新部署了项目导致server.xml的虚拟目录的配置代码被删除了,因此重新发布需要再次配置虚拟目录(建议备份虚拟目录,每次部署的时候可以方便配置):

如图所示,server.xml需要重新配置

注意:是重新部署,重新启动或者调试server并不会初始化server.xml

效果如下

另外需要说明的是,在多次调试,server.xml时常被修改(Restart项目时),目前还没有找到原因

解决方案:从官网下载tomcat,使用本地tomcat不会出现此类问题

希望有懂这方面的大佬能够指点一下,在下感激不尽

猜你喜欢

转载自blog.csdn.net/qq_36864012/article/details/85994204
今日推荐