原生图片上传与加载

前几天公司里安排了任务需要维护某项目的几个模块,其中一个模块里的功能就是图片的上传与加载,由于这个项目使用的技术和框架都相对旧一点,jdk用的是1.6版本的,有些功能像文件上传下载有非常成熟的框架可以使用。从网上搜集资料得知图片上传常用的有两种方法,一种是编码Base64后直接存入数据库;一种是上传到本地的某个文件目录下,然后数据库中存路径。第一个种方法可以Base64Encoder工具实现,但是由于jdk版本太低无法支持,所以这种方法放弃,所以采用了第二种方法,一开始的时候一直在纠结路径如何确定,因为上传的话肯定要上传到一个物理路径(当时以为只能上传到项目部署路径上才可以访问),而加载图片肯定要访问一个URL(后来发现加载图片也可以通过IO流),所以就陷入了一个困境。不过最终与其他大佬们讨论得知了加载图片不一定非要通过URL访问,然后问题就解决了。接下来说一下我写的代码(由于涉及到公司代码保密问题,我只上传自己写的其中一部分):


前台:

<form method="post" id="imgForm" enctype="multipart/form-data">
照片:<input type="file" id="photo" name="photo"/>
</form>

注意file的input不能直接获取或赋值,只能随表单提交。另外我做的功能里不止有图片上传还有其他信息,我采用方法是用两个表单,具体原因在后台的时候解释。


后台:

上传:

文件上传和普通input 的表单是不同的,前者必须要在form加enctype=“multipart/form-data”,且以流的形式到后台,后台也不能再使用request.getParameter获取值。这也是前台为什么分成两个表单的原因,当然普通input的表单也可以通过流提交,只要在后台做好判断就行。
关于上传代码,我用的是项目提供的API,所以不能在这里展示,大家可以搜一下request流之类的,网上资源很多。


加载:

加载图片的时候也是通过流的形式加载

public void IoLoadImage(HttpServletRequest request,HttpServletResponse response) throws IOException {
		ServletOutputStream out = null;
		FileInputStream ips = null;
		try {
			//获取图片存放路径
			String imgPath = "";
			ips = new FileInputStream(new File(imgPath));
			response.setContentType("multipart/form-data");
			out = response.getOutputStream();
			//读取文件流
			int len = 0;
			byte[] buffer = new byte[1024 * 10];
			while ((len = ips.read(buffer)) != -1){
				out.write(buffer,0,len);
			}
			out.flush();
		}catch (Exception e){
			e.printStackTrace();
		}finally {
			out.close();
			ips.close();
		}
		
	}

html里展示:

<!-- src直接放入访问后台的链接,保证可以访问上述后台代码即可 -->
<img src=“” style='width:50px;height:80px'/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值