2015.12.10 文件上传下载
Application/x-www-form-urlencoded
只需要在input里面的type里面设置 为file。enctype="multipart/form-data"
举例:
<form action="" method="" enctype="multipart/form-data"/>
<input type="file" name=""/>
</form>
默认的 enctype是 application/x-www-form-urlencoded 是表单形式提交。
这里来一个答疑。
对于一个表单来说,上传有多余两种方式,有一种在报错的时候告诉我是一个mixed stream。
但是对于我们现在的知识来说,需要掌握两种,一种是默认的表单方式:表现形式是:enctype="application/x-www-form-urlencoded"。另一种是可以传递文件的复合数据形式:enctype="multipart/form-data"。
对于符合文件的解析来说,
1、首先需要创建一个 硬盘文件项工厂
DiskFileItemFactory dfif = new DiskFileItemFactory();
2、上传文件控制层
ServletFileUpload sfu = new ServletFileUpload(dfif);
3、然后利用 上传文件控制层 解析 表单发来的请求
sfu.parseRequest(request);
解析的结果是一个 文件项列表
List<FileItem> fileItems = sfu.paresRequest(request);
然后遍历。
对于文件项来说有两种分类:是表单域(可简单理解为非文件) 或者 是非表单域(简单理解为文件)
是表单域的话:
for(FileItem fileitem:fileItems){ If(fileitem.isFormField){//是表单域 String fileName = fileitem.getFieldName(); String fileValue = fileItem.getString(); Syso(fileName+fileValue); }else{//是非表单域 String fileName = fileitem.getName(); } }
文件上传这里需要两个包。要记得commons-fileupload-1.2.2.jar 和commons-io-2.0.1.jar
下载真不是那么简单,这个想想就完了,在android里面只要请求一个路径就能下载,但是其实在javaweb里面,不能那样,为什么呢?假设都是下载一张图片,在android里面,请求就能下载,但是在浏览器这段,假设请求的一个超级链接有一个url,点开后,只能是显示一张图片到当前浏览器,根本不能实现,文件的下载,所以。这个想法本身因为平台的原因,变得不合理。