java web保存图片_java web应用用户上传图片的存储地址

0b51d59ccd4f72c220075ba7af025626.png

每次使用maven tomcat:redeploy以后,这个目录就没有了。

73faf95411c25449f347bb9b5b17f0a0.png

现在想要把上传图片的位置移动到tomcat的webapps目录中专门存放图片的一个目录下。

17ac608bb4915af7d7e3aab25fff0725.png

即,新建的一个images目录用来存放web应用的图片们。

这样就把工程和用户上传图片分离了,以后在redeploy时也不用预先备upload目录,然后再拷贝回去,因而在web应该更新时比较方便些。此外,还想改变文件路径被硬编码到java文件中的现状,所以将文件的存储位置预先定义在web.xml中,这样将来再改变位置的时候就不需要再回去改动代码了。

要完成上述目的,需要更新的地方有三个:

一、在web.xml中设置保存上传图片的路径

二、更新与上传图片相关的java类,去掉硬编码的部分,将路径改为从servletContext读取,由web.xml统一配置。

三、更新MySQL数据库中已经存在的数据中的链接路径

下面记录更新的过程:

一、在web.xml中设置保存上传图片的路径

UPLOAD_IMAGE_PATH

../images/wiqun/upload/

二、更新与上传图片相关的java类

上传图片使用的是smartUpload。先通过servletContext获得UPLOAD_IMAGE_PATH参数的地址,保存在image_path这个String变量中。

2.1从servletContext中获得上传文件保存的地址

String image_path = this.getServletContext().getInitParameter("UPLOAD_IMAGE_PATH");//从配置文件中读取要保存的位置

这个地址在使用之前别忘了在代码中测试一下是否存在该目录,若不存在要创建,否则会抛出exception。

2.2使用指定的路径保存上传的图片

48304ba5e6f9fe08f3fa1abda7d326ab.png

1 su.upload();

2

3 for (int i = 0; i < su.getFiles().getCount(); i++) {

4   com.wiqun.smartUpload.File myfile = su.getFiles().getFile(i);

5     //直接提取或另外生成图片的文件名,保存在fileName变量中

6   ........ 7     //将上传的图片以fileName为名,保存到image_path指定的目录下

8 myfile.saveAs(image_path + fileName); 9

10 }

48304ba5e6f9fe08f3fa1abda7d326ab.png

第8行中的image_path就是在web.xml文件中指定的UPLOAD_IMAGE_PATH参数的值。

2.3测试

fc02565cf93fc759cea8a011733c756a.png

UPLOAD_IMAGE_PATH参数指定的目录下:

53eda5d375d49c682b78e47df904f89f.png

三、更新MySQL数据库中已经存在的测试数据中的链接路径

数据库中存有曾经的测试数据,其中的图片路径还是"upload/xxxxxx.jpg"格式的。现在要把它们替换成我们在web.xml中定义的新路径"../images/wiqun/upload/xxxxx.jpg"格式。此过程可以使用MySQL的replace语句来完成。现在,我们要把sight表格中的introduction列中的“upload/”替换成“../images/wiqun/upload/”,语句为:

update sight set introduction = replace(introduction,'upload/','../images/wiqun/upload/');

格式为 update 表名 set 列名 = replace(列名,'被替换的字串','替换的字串')

执行前,数据库introduction列部分截图如下:

8cfd661ee0f1ce13d1c14215f79e653a.png

wiqun是web应用的名称。当前所有用户上传的图片都是存放在wiqun目录的upload目录下,就像文章一开始所显示的截图。

在执行了上述replace语句后,MySQL提示如下:

d382f1da7604cb3072cd13e120336278.png

现在再看看数据库里的状态:

e9f4638631c848c0e6671a10cb567000.png

可以看到路径名都已经完成替换了。

在浏览器中测试图片是否可以浏览:

22381ec89ed543273bfd8e7e6b935c1b.png

至此,就完成了web应用中,上传文件的路径替换。

以后如果还要更改路径,只需要更改web.xml中UPLOAD_IMAGE_PATH参数的值,并且更新数据库中的链接即可,不需要再改动代码了。硬编码真是有些伤不起。不知道数据库中是不是也可以预先定义一个变量什么的,然后也直接绑定到配置文件中,这样以后也不需要手工更新数据库了。

至于别的大神说用云存储的方式进行存储,小编在此还不会,哪位大神要会的话进行个留言,万分感谢!

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

阖康

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值