web项目中上传的图片项目重新部署之后被清空如何解决?
前言:
我们在web项目中经常有上传图片的功能,上传的图片存在哪里呢?
存储方式一般有:存入数据库中,跟随项目相对路径中,还有就是再专门设计一个图片服务器用于图片处理。
当图片量大的时候,或者查询数据量大的时候,非常的影响性能,数据库显然不太推荐使用。
对于小项目来说,再另外特地为图片操作开一个服务也不太现实,维护等也都比较麻烦。
在小项目中,对于每一个体验用户,上传的图片可能需要属于个人信息的一部分,所以图片显然不能存在页面的伴随的静态资源img里面,但是凡是懂点点的人都可以在浏览器中查看资源找到所有图片,并且当图片多了的时候每次加载都会很慢。我们还希望不是存在本地的某个非tomcat之外路径(因为当项目上线之后环境可能不是本机了(可能是云服务器)),所以我们希望图片伴随项目,所以我们选择保存在WEB_INF下的文件夹中。
如何解决?
那么问题来了,我们会发现每次重新部署项目时图片文件夹会消失,导致图片文件丢失。为什么呢?
问题就出在,项目访问之前都会将项目打包好扔进去tomcat weapp 中,项目访问都是访问部署好在 tomcat webapp 下的项目,然而每次上传图片都是存储在webapp 下部署的项目中的WEB_INF 文件夹下,但是重新部署项目之后,原来的源项目中并没有创建图片文件夹这时候,将它部署到 tomcat 中后将原来的项目替换覆盖了。所以它图片就消失了。
最后我们选择的是保存在当先web项目外,web项目运行环境内,也就是tomcat的安装目录下的webapp(与部署的项目)同级下创建一个专门用于存储图片资源的文件夹中。
在存图片的时候获取当前项目的相对路径并找到单项项目所在文件夹:
在webapp 中新建一个图片夹中,并且把图片存在里面,保存的同时将图片的名字保存在数据库中,方便获取。
由于项目无法直接获取项目外路径的图片资源,所以获取的时候通过配置tomcat的配置文件server.xml, 映射到项目外的图片文件夹便可获取了。
web项目中上传的图片项目重新部署之后被清空如何解决?相关推荐
- java上传过大图片超时_解决.net项目中上传的图片或者文件太大无法上传问题
最近做项目的时候 用户提出要上传大图片 一张图片有可能十几兆 本来用的第三方的上传控件 有限制图片上传大小的设置 以前设置的是2M 按照用户的要求 以为直接将限制图片上传大小的设置改下就可 ...
- 【医疗健康项目】传智健康项目(一)
第1章 项目概述和环境搭建 1. 项目概述 1.1 前言 传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化.会员管理专业化.健康评估数字化.健康干预流程化.知识库集成 ...
- vue项目中上传文件到阿里云oss方法
上传背景介绍 在项目需求中,关于图片.视频.文件等上传文件,一般不是直接放置在自己的后台服务器上,一般都会购买云服务进行存储.譬如阿里云的oss对象存储. 那么,前端开发项目中,涉及到上传的功能时,我 ...
- svn中上传下载maven项目
1在eclipse中安装svn插件 2打开svn视图 如下显示 3右击新建资源库位置 所建的本地服务器为 4如果share错误 5从svn检出 右击需要检出的项目 5改变项目的working set ...
- 【医疗健康项目】传智健康项目(三)
第4章 预约管理-套餐管理 1. 图片存储方案 1.1 介绍 在实际开发中,我们会有很多处理不同功能的服务器.例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存 ...
- 【医疗健康项目】传智健康项目(五)
第7章 移动端开发-页面静态化 1. 页面静态化介绍 本章课程中我们已经实现了移动端套餐列表页面和套餐详情页面的动态展示.但是我们需要思考一个问题,就是对于这两个页面来说,每次用户访问这两个页面都需要 ...
- 【医疗健康项目】传智健康项目(四)
第6章 移动端开发-体检预约 1. 移动端开发 1.1 移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车. ...
- 【医疗健康项目】传智健康项目(二)
第2章 预约管理-检查项管理 1. 需求分析 传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化.患者管理专业化.健康评估数字化.健康干预流程化.知识库集成化,从而提高 ...
- 【医疗健康项目】传智健康项目(八)
第13章 预约管理-JasperReports生成PDF报表 在前面的课程中我们完成了将运营数据导出到Excel文件的功能.在企业开发中,除了常见的Excel形式报表,还有PDF形式的报表.那么如何导 ...
最新文章
- 编译32位扩展在64位环境
- 说说你知道的数据库常用架构方案?
- 性能测试应该怎么做?
- Java REST框架一览
- SAP Fiori Launchpad Contact Support的按钮启用逻辑
- android webview 图表,Android WebView 无法正常显示网页图表
- Salesforce宣布5.82亿美元收购文件编辑公司Quip
- java.io.FileNotFoundException: ...\ibs\library-1.0.17.jar (系统找不到指定的文件。)
- c语言中double占多少字节,double占几个字节?
- mysql5.7 jmeter_JMeter5连接Mysql数据库
- 看完此篇文章可以快速熟悉Spring事务
- 什么是EasyUI,如何使用EasyUI?--easyui的十二种用法
- Ubuntu Linux
- 小熊派STM32-OTA+IOT教程
- Retrofit2.0介绍使用封装
- NBA球员生涯数据统计系统(中南大学C语言课设)
- JS学习之BOM | 常见网页特效 | 轮播图 | 返回顶部 | 筋斗云案例
- OpenCV_Viz——OpenCV中Viz的模块编译的无法解析的外部符号BUG
- c++bitset用法详解(超简单)——蒟蒻函数
- SpringBoot集成之过滤器