频道栏目
首页 > 资讯 > HTML/CSS > 正文

JAVA附件上传之图片上传

17-07-20        来源:[db:作者]  
收藏   我要投稿

一 前言

在Java的成长道路上,有很多的拦路虎.而它们中的每一个都可能曾经让你苦不堪言.对于我来说,图片上传就是我在从事Java工作以来,遇到的相当凶猛的一只.我曾经在写移动端接口的时候,需要写一个图片上传的接口.当然,只是简单的从PC端拷过来.(现在看来非常easy,但当时确实花了我整整两天的时间).在拷贝接口后,可能会遇到各种水土不服的问题,而我的同事也遇到了这个问题,我想应该也有很多其他童鞋和朋友会遇到类似的问题.所以我在这里记录一下PC端图片上传的大概过程,以及可能会遇到的问题.巩固自己,帮助他人.

二 流程简述

以添加商品为例,我们 在添加和发布商品的时候,通常会用到图片上传,也有可能是多张图片上传.但是道理都是一样的,在理清单张上传后,我相信对于从事java的朋友来说,这种管中窥豹,举一反三应该不难.

这里一般会用两个表,产品表product和附件表attach.两者的关联外键为attachRootId.此ID为图片上传时生成的随机的唯一的图片标识.我们在操作商品的图片数据时,都是使用这个ID来实现关联的.

在产品上传的页面,我们需要引入由美工设计好的图片上传页面.可以使用iframe标签包裹,以调整样式至理想的效果.这里大致的模块包含三部分:图片显示区域,功能按钮区域和上传提示区域(当然这些和我们Java无关,忍不住多说了一点),如下图:

具体的效果如下图:

上传页面显示细节:

其实这里和我们一般的通过请求接口来获取页面的流程是一模一样的,主要想说的是在请求时的参数设置问题.我在这里把参数分为三种,分别是attachRootId,uploadType和fileType.

在一个系统内,有多个地方会用到图片上传,为了防止数据过多导致混乱,也为了更好地去命名图片存放路径,我们在之前会规定好每个模块对应的图片类型如01对应企业,02对应商品.同时附件本身还有一个文件类型区分如01代表图片,02代表视频,03代表文档等这些都是我们在进行上传操作时需要用到的重要参数,也是请求接口时需要用的参数.

另一个需要用到的参数就是我们上文提到的attachRootId,attachRootId不仅在上传的时候需要使用,在上传成功后显示图片也需要用到.那我们在添加商品时,可以直接生成一个attachRootId,具体的生成规则因人因公司而异,这里就不细说了.但是这个ID必须要保证它的唯一性.我们在修改商品信息时,数据库里已经有了这个商品图片的数据了,为了避免资源浪费,我们可以事先判断这个ID是否存在,如果存在就继续使用原有的attachRootId,不存在就生成一个新的.

具体的后台上传操作:

接收图片上传的数据:

数据包括图片信息和参数信息.使用DefaultMultipartHttpServletRequest类来传递图片信息,使用CommonsMultipartFile类来接收图片信息,具体如下:

数据接收成功后,我们需要对文件信息进行判断,确认用户上传的图片是否合法,主要包含文件是否上传判断,文件大小判断,文件类型判断以及图片数量判断.代码如下:

数据判断通过后,生成图片的上传路径,这里就需要用到我们接收到的参数了.一般来说,我们上传的文件会存放在项目工作空间里的固定地址,主要就是通过if else实现的.具体的代码就不贴了.因为这部分其实并不重要的,而且难度并不高.

在生成图片路径后,接下来要进行添加水印和保存图片存放信息到数据库.因此在这之前,要设置好操作数据库需要的参数信息.如attachRootId,文件类型,存放地址,文件名称等,代码如下:

参数准备好就可以执行添加水印和上传操作了.

三 部分问题解决方法

图片上传总是提示失败:

检查是否成功请求图片上传接口,如果已经请求到了,就走window,一步一步地检查,一定要耐心.通常这种错误都出现在数据验证和上传操作里

图片上传成功后,图片显示区域显示404:

不用多想,路径处理有问题.这里问题要么出在参数上,要么出现在根路径上

图片上传成功,页面也显示,但是在详情页面无法显示:

检查数据库保存的路径信息.对比取图片的sql,检查哪里不同

关于图片上传就是这么多了,感觉自己表达能力有限.有些想要说的在写的过程中全部忘完了,不知道大家有没有遇到这种事情,反正我是经常遇到(笑cry).如果大家有问题,欢迎提问.在能力范围之内,一定解答!

相关TAG标签
上一篇:document属性和操作
下一篇:工作区和暂存区stage
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站