关于图片上传处理(web) --笔记1

这些笔记都是实用的技术细节:

图片处理流程,无外乎几个步骤

1、web上传图片

2、服务端接收图片

3、服务端处理图片

4、保存图片

上传图片:

一句话:设置form的属性enctype为multipart/form-data

在HTML中,使用表单Form主要是用来向服务器提交数据,格式如下:
<FORM ACTION="URL"
METHOD="GET|POST"
ENCTYPE="…" TARGET="...">
. . .
</FORM>
enctype指定了表单提交给服务器时的内容形式(Content-Type),默认值是"application/x-www-form-urlencoded",这时,表单信息一般采用URL编码制。
但是,当向服务器传送图片或文件这样包含非ASCII字符或二进制数的数据时,根据RFC1867规定,就必须使用“multipart/form-data”内容类型。
其实无论是默认表单信息,还是图片文件,这些内容都是装载在HTTP协议的正文内容部分,都可以看成HTTP协议携带的对象,只是两种正文内容形式不一样。前者是String字符串类型,而后者则是一个通用的数据对象类型(Object)。在以后章节中将专门讨论HTTP协议装载数据对象的底层细节。
使用“multipart/form-data”上传文件的格式写法如下:
<FORM ACTION="URL" METHOD="GET|POST" ENCTYPE=" multipart/form-data ">
 
</FORM>
文件通过HTTP协议传送到服务器端后,需要在服务器端对该文件进行专门的接受。HttpServletRequest没有提供直接获取文件数据的方法,因此需要开发专门的服务器文件处理组件。
目前有两种上传文件处理组件:一种是基于完全JSP结构的,使用JSP来处理上传的文件,以SmartUpload(http://www.jspsmart.com)最常用;还有一种是完全的JavaBeans组件:Cos文件上传组件包(http://www.servlets.com/cos/index.html),Cos可以使用在JSP中,也可以使用在Servlet或Servlet Filter中。
由于在实际应用中,文件上传功能往往和其他正常表单参数一起混合使用,而不是独立使用的。因此,可以设定一个Servlet专门用来处理这类混合表单的请求,在将文件接受处理后,自动导向到处理表单正常参数的JSP/Servlet去处理。
表单调用示例如下:
     method="post" enctype="multipart/form-data">
    
  
  
  
  
  
在这个表单中,既有文件提交,也有username这样正常的参数需要提交,提交的Servlet名为multipartformserv。
接收图片:
当然是在servlet处理,这里借助类com.oreilly.servlet.MultipartRequest:

mrequest

Hashtable hashtable=

 

Enumeration e=

 

String imgname=(String)e.nextElement();

String imgfile=

 

hashtable.put(imgname,imgfile);

 

 

}

}

 

}

这样,把图片名称的映射放置于一个hashtable中

 

new Hashtable();mrequest.getFileNames();while (e.hasMoreElements()) {mrequest.getFilesystemName(imgname);if (imgfile!=null){// System.out.println(imgname+"="+imgfile);return hashtable; = new MultipartRequest(request,uploaddir,size * 1024);
其他继续
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值