关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
一、数据库存储
直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733
直接存图片在mysql上面有两点好处:
1.比较容易做取重,就是相同的图片只存一份.
2.最重要备份使用数据库的备份方式简单.
3.容易管理,去掉无用的图片等.
缺点:
1.不适合超大量存储,数据的存储越大,恢复越麻烦
2.当然一般还是需要前端做更多的物理缓存,而不是靠mysql来直接输出.
还是看需求,如果图片是小图片,像论坛使用的,并且需要注重他的优点的可以使用,至于量没有具体的,你要想想如果数据库遇到问题,
它的重做和迁移是否方便的问题.其实如果不是特殊情况一般存在数据库里都不是好的选择.平衡他的优缺点.
二、webRoot下存储
利用上床组件把图片上传到web项目下,再存储图片的相对路径到数据库表中,需生成一个新的不会重复的图片名
缺点:显而易见重新部署项目前需要重新把已上传的图片备份,待部署成功后拷贝到web项目下
三、web项目外存储
顾名思义,把图片上传到web目录外
1.建立存放图片的目录和web项目下一目录之间的联系
例如:①Linux系统下,首先把图片上传到项目外一目录;
②然后把此目录挂载到项目内某一目录下mount --bind 实际存放图片目录项目内某一目录;
③然后把上传图片的相对路径存储到数据库表中;
④最后在项目中直接访问这个URL获取图片。
注意:第一存放图片的目录需有上传权限;
第二在重新部署时,undeploy前先解除挂载umount 实际存放图片目录项目内某一目录;
待项目上传成功后再重新建立挂载,否则在undeploy时可能丢失已上传的图片。
缺点:每次部署前后要进行挂载,解挂载操作,易误操作丢失资源
2.配置虚拟路径
例如使用tomcat时:
首先把图片上传到项目外一目录下;然后在tomcat中配置一个虚拟路径指向上传目录命名为 "/fileUpload" (在/conf/server.xml下配置Context即可);
然后把上传图片的相对路径存储到数据库表中,再在程序中通过访问这个虚拟路径 "/fileUpload" + 数据库中存储的相对URL 来获取文件资源;
(其实相当于在tomcat下重新启动了一个web项目,然后通过访问此web项目下的图片资源,
这样其实也可以通过 http://ip:port/webProject/ resourse)。
解决:可以使用tomcat的配置文件将某个请求映射到物理路径下 ,完成图片的回显。
例子:
1.修改tomcat的配置文件(window环境),
首先找到tomcat目录下conf目录下的server.xml文件,在server.xml文件中找到<Host></Host>;
然后在其中加上这<Context path="/uploadfile" docBase="D:\File\imager"></Context>。
如:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log."
suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
<!-- 下面两条主要是tomcat转发图片请求到相应的电脑物理磁盘位置 -->
<Context path="/uploadfile" docBase="D:\File\imager"></Context>
</Host>
tomcat在的请求一般为:http://localhost:8080/uploadfile/abc.jpg。配置完重启之后,该请求自动跳转到物理路径D:\File\imager下查找。会访问本机的D:\File\imager\abc.jpg。
注意:在启动完tomcat后会报路径“D:\File\imager”找不到的bug,这是因为:tomcat不会自动帮您创建相关的文件路径,需要我们自己先创建好相应的文件路径。
转载自:http://blog.csdn.net/u014305991/article/details/42431369
关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)的更多相关文章
- 【转】关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ...
- Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。
题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...
- eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)
我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...
- 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...
- 【extjs】 Extjs中的Ext.grid.Panel隐藏列会显示在表头中解决方法
在Extjs中的GridPanel会有这样的情况,隐藏列会显示在menuDisabled中,但是这个一般没有什么用处,只是用于后台取值的作用,感兴趣的朋友可以了解下啊,希望本文对你有所帮助 在Ex ...
- Linux 部署java web 项目,验证码图片不显示文字问题
系统上线后,在获取验证码接口时,获取的验证码图片上没有对应的验证码数字,经过验证后,是由于Linux缺少字体造成的. 正常我们也可以将window的字体直接上传到linux服务器上,window的字体 ...
- web项目编译出错时,原因之一,可能是build path 中order and Export引起
build path中的order and Export,如果两个libarary中有相同功能的jar包,则编译器会选择顺序在前的jar包中相应的类作为编译所需. 所以,当项目jar包较多的时候,如果 ...
- AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别(转载)
自从AndroidStudio更新到2.2,就有了CMake和传统JNI两种开发NDK的方法,主要就是在目录结构和build.gradle上的区别,下面我们将分别介绍目录区别和build.gradle ...
- 数据库中float类型字段,转化到前端显示,统一保留两位小数
客户的一个需求,mybatis查询到的数据库的数据进行转换,采用TypeHandler<T>的方式.float保留两位精度可以采用DecimalFormat 直接贴上最终的解决代码(事情没 ...
随机推荐
- C/C++宏的用法
今天看caffe源码的时候看到了很多宏定义的内容,苦于代码基础薄弱,无法全部理解,故在网上搜得此篇好文,转载一发附原文地址:http://blog.csdn.net/hanchaoman/articl ...
- scrapy抓取拉勾网职位信息(二)——拉勾网页面分析
网站结构分析: 四个大标签:首页.公司.校园.言职 我们最终是要得到详情页的信息,但是从首页的很多链接都能进入到一个详情页,我们需要对这些标签一个个分析,分析出哪些链接我们需要跟进. 首先是四个大标签 ...
- NOIP2018 提高组题解
Day1 T1 据说是原题积木大赛,但是考场上蠢了,只会写数据结构,于是写了一个线段树\(+\)堆\(+\)贪心,先选出最小的,然后区间修改,然后把左右两端区间的最小值丢进堆里,不停从堆中去最小值更新 ...
- poj 2287(贪心)
Tian Ji -- The Horse Racing Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 12490 Acc ...
- CSS 笔记——文本字体
5. 文本字体 -> 文本 (1)text-indent 基本语法 text-indent : length 语法取值 length : 百分比数字 | 由浮点数字和单位标识符组成的长度值,允许 ...
- windows上同时安装两个版本的mysql数据库
一.先停止之前安装的低版本mysql服务 二.将其他电脑上安装好的mysql拷贝过来 三.拷贝过来之后,进入该文件夹,删除掉data目录,然后打开my.ini,进行修改端口号,端口号改为3307,ba ...
- AGC 012 D - Colorful Balls
题面在这里! 为什么atcoder都是神仙题啊qwq 首先发现如果要让 x,y 互换位置的话,要么通过他们直接换 (也就是x和y满足两种操作之一),要么间接换,通过一些其他的元素形如 x可以和 a[1 ...
- 【Splay】Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) B. Cards Sorting
Splay要支持找最左侧的最小值所在的位置.类似线段树一样处理一下,如果左子树最小值等于全局最小值,就查左子树:否则如果当前节点等于全局最小值,就查当前节点:否则查右子树. 为了统计答案,当然还得维护 ...
- ListView EditText 实现的三种方式
原文网址:http://blog.sina.com.cn/s/blog_682139d001013omd.html 这段时间搞一个android表格,真是搞死人,让我想到iphone开发是何其的简单啊 ...
- codevs 1349 板猪的火车票
1349 板猪的火车票 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 奸商zn(请勿对号入座)开办了一家火车公司,弱弱的板猪 ...