文件上传下载

2015.12.10 文件上传下载

Application/x-www-form-urlencoded

只需要在input里面的type里面设置 为fileenctype="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,点开后,只能是显示一张图片到当前浏览器,根本不能实现,文件的下载,所以。这个想法本身因为平台的原因,变得不合理。

原文地址:https://www.cnblogs.com/letben/p/5185320.html