上传
来源:互联网 发布:数控铣床编程实验报告 编辑:程序博客网 时间:2024/04/30 04:06
1. 上传对表单限制
* method="post"
* enctype="multipart/form-data"
* 表单中需要添加文件表单项:<input type="file" name="xxx" />
<form action="xxx" method="post" enctype="multipart/form-data">
用户名;<input type="text" name="username"/><br/>
照 片:<input type="file" name="zhaoPian"/><br/>
<input type="submit" value="上传"/>
</form>
2. 上传对Servlet限制
* request.getParametere("xxx");这个方法在表单为enctype="multipart/form-data"时,它作废了。它永远都返回null
* ServletInputStream request.getInputStream();包含整个请求的体!
多部件表单的体
1. 每隔出多个部件,即一个表单项一个部件。
2. 一个部件中自己包含请求头和空行,以及请求体。
3. 普通表单项:
> 1个头:Content-Disposition:包含name="xxxx",即表单项名称。
> 体就是表单项的值
4. 文件表单项:
> 2个头:
* Content-Disposition:包含name="xxxx",即表单项名称;还有一个filename="xxx",表示上传文件的名称
* Content-Type:它是上传文件的MIME类型,例如:image/pjpeg,表示上传的是图片,图上中jpg扩展名的图片。
> 体就是上传文件的内容。
-----------------------------7e0d2950c62
Content-Disposition: form-data; name="username"
鐙?
-----------------------------7e0d2950c62
Content-Disposition: form-data; name="picture"; filename="dog.jpg"
Content-Type: image/pjpeg
1. 上传三步
相关类:
* 工厂:DiskFileItemFactory
* 解析器:ServletFileUpload
* 表单项:FileItem
1). 创建工厂:DiskFileItemFactory factory = new DiskFileItemFactory();
2). 创建解析器:ServletFileUpload sfu = new ServletFileUpload(factory);
3). 使用解析器来解析request,得到FileItem集合:List<FileItem> fileItemList = sfu.parseRequest(request);
2. FileItem
* boolean isFormField():是否为普通表单项!返回true为普通表单项,如果为false即文件表单项!
* String getFieldName():返回当前表单项的名称;
* String getString(String charset):返回表单项的值;
* String getName():返回上传的文件名称
* long getSize():返回上传文件的字节数
* InputStream getInputStream():返回上传文件对应的输入流
* void write(File destFile):把上传的文件内容保存到指定的文件中。
* String getContentType();
<h1>上传1</h1> <form action="<c:url value='/UploadServlet'/>" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="username" /><br /> 照片:<input type="file" name="picture" /><br /> <input type="submit" value="上传" /> </form>
public class UploadServlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");/* * 上传包括三步: * 1. 创建工厂 * 2. 通过工厂创建解析器 * 3. 解析request,得到FileItem集合 * 4. 遍历FileItem集合,调用其API完成文件的保存 */DiskFileItemFactory factory =new DiskFileItemFactory();ServletFileUpload sfu=new ServletFileUpload(factory);try {List <FileItem> fileItemList=sfu.parseRequest(request);FileItem fi1=fileItemList.get(0);FileItem fi2=fileItemList.get(1);System.out.println("普通表单项:"+fi1.getFieldName()+"="+fi1.getString("utf-8"));System.out.println("文件表单项:");System.out.println("Content-Type:"+fi2.getContentType());System.out.println("size:"+fi2.getSize());System.out.println("filename:"+fi2.getName());//保存文件File file=new File("E:/1.jpg");fi2.write(file);} catch (Exception e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}}
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 上传
- 文件上传---文件上传
- 图片上传、视频上传
- 上传图片,上传语音,上传视频等
- LinuxApache源码安装经验
- 史上最全设计模式导学目录(完整版)
- iOS 3D Touch简单使用
- Oracle移植到mysql
- Matlab中读取txt文件的几种方法
- 上传
- 虎嗅网WordPress模板 2016最新版
- if else
- mysql主从同步总结
- 大前端XIU5.2版本主题xiu最新版
- 我的第2次C++实验
- ArcGIS runtime sdk for android 结合mpchartlib进行离线数据统计分析
- Android 设计模式总结
- CodeForces - 630K Indivisibility (容斥原理)