后缀名 | MIME名称 |
---|---|
col 3 is | right-aligned |
col 2 is | centered |
zebra stripes | are neat |
*.3gpp | audio/3gpp, video/3gpp |
*.ac3 | audio/ac3 |
*.asf | allpication/vnd.ms-asf |
*.au | audio/basic |
*.css | text/css |
*.csv | text/csv |
*.doc | application/msword |
*.dot | application/msword |
*.dtd | application/xml-dtd |
*.dwg | image/vnd.dwg |
*.dxf | image/vnd.dxf |
*.gif | image/gif |
*.htm | text/html |
*.html | text/html |
*.jp2 | image/jp2 |
*.jpe | image/jpeg |
*.jpeg | image/jpeg |
*.jpg | image/jpeg |
*.js | text/javascript, application/javascript |
*.json | application/json |
*.mp2 | audio/mpeg, video/mpeg |
*.mp3 | audio/mpeg |
*.mp4 | audio/mp4, video/mp4 |
*.mpeg | video/mpeg |
*.mpg | video/mpeg |
*.mpp | application/vnd.ms-project |
*.ogg | application/ogg, audio/ogg |
application/pdf | |
*.png | image/png |
*.pot | application/vnd.ms-powerpoint |
*.pps | application/vnd.ms-powerpoint |
*.ppt | application/vnd.ms-powerpoint |
*.rtf | application/rtf, text/rtf |
*.svf | image/vnd.svf |
*.tif | image/tiff |
*.tiff | image/tiff |
*.txt | text/plain |
*.wdb | application/vnd.ms-works |
*.wps | application/vnd.ms-works |
*.xhtml | application/xhtml+xml |
*.xlc | application/vnd.ms-excel |
*.xlm | application/vnd.ms-excel |
*.xls | application/vnd.ms-excel |
*.xlt | application/vnd.ms-excel |
*.xlw | application/vnd.ms-excel |
text/xml, application/xml | |
*.zip | aplication/zip |
*.xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
在 Commons-fileupload 组件中,主要用到以下三个接口和类:
ServletFileUpload 负责处理上传的文件数据,并将每部分的数据封装到 FileItem 对象中。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%--基于Apache组件的文件上传:1.导入commons-fileupload-1.2.1.jarcommons-io-2.0.jar2. 其它设置与type="file"一致3. 在servlet中使用这两个jar包进行操作3.1.基本思想:3.1.1.可以解析请求,得到一个FileItem对象组成的List3.1.2.所有的请求斗会封装成一个FileItem对象(文本/文件/……)3.1.3.调用FileItem的isFormField()方法,判断是表单域还是别的(false:表示是一个文件)3.1.4.根据类型获取信息3.2.具体操作3.2.1.得到List<FileItem>3.2.1.1.简单得到// Create a factory for disk-based file itemsFileItemFactory factory = new DiskFileItemFactory();// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);// Parse the requestList /* FileItem */ items = upload.parseRequest(request); 3.2.1.2.复杂得到(可以设置文件的一些限制和其它属性)// Create a factory for disk-based file itemsDiskFileItemFactory factory = new DiskFileItemFactory();//设置内存中最多可以存放的上传文件的大小, 若超出则把文件写到一个临时文件夹中. 以 byte 为单位factory.setSizeThreshold(yourMaxMemorySize);//设置那个临时文件夹factory.setRepository(yourTempDirectory);// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);//设置上传文件的总的大小.。也可以设置单个文件的大小.(setFileSizeMax)upload.setSizeMax(yourMaxRequestSize);// Parse the requestList /* FileItem */ items = upload.parseRequest(request); 3.2.2.处理信息 --%><form action="uploadServlet" method="post" enctype= "multipart/form-data" ><!-- type="file":表示是一个用户文件上传的input标签 -->文件上传:<input type="file" name="file" /><br />信息:<input type="text" name="text" /><br /><input type="submit" value="提交" /></form> </body>
</html>
package top.itcourse.servlet;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apachemons.fileupload.FileItem;
import org.apachemons.fileupload.FileUploadException;
import org.apachemons.fileupload.disk.DiskFileItemFactory;
import org.apachemons.fileupload.servlet.ServletFileUpload;public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");//1.得到List<FileItem>//1.1.创建工厂DiskFileItemFactory factory = new DiskFileItemFactory();//1.2.通过工厂设置JVM处理文件大小限制(单位是bytes),当超过这个大小的时候,文件会被写到临时目录下(不然是在内存中处理的)factory.setSizeThreshold(1024 * 500); //500k//1.3.设置临时目录factory.setRepository(new File("/Volumes/Player/FileDire"));//1.4.创建ServletFileUpload,把工厂对象传进去ServletFileUpload upload = new ServletFileUpload(factory);//1.5.通过ServletFileUpload设置可以上传的文件的总大小(单位bytes),区别开DiskFileItemFactory的setSizeThresholdupload.setSizeMax(1024 * 1024 * 500);//1.6.获得List,调用parseRequest方法List<FileItem> parseRequest = null;OutputStream os = null;InputStream is = null;try {parseRequest = upload.parseRequest(request);//2.遍历所有的FileItem,确认类型for (FileItem fileItem : parseRequest) {//3.类型为普通表单,打印if( fileItem.isFormField() ) {System.out.println("------------------------------------普通表单---------------------------------------");//3.1.获取普通表单的名字(用的是getFieldName,获取表单的name)String name = FieldName();//3.2.获得这个FileItem的值String value = String();System.out.println(name + " : " + new Bytes("iso-8859-1"),"utf-8"));System.out.println("---------------------------------------------------------------------------");//4.类型为文件类型(非普通表单),保存在指定位置} else {System.out.println("------------------------------------文件---------------------------------------");//input中的nameString fieldName = FieldName();//文件名String fileName = Name();//String contentType = ContentType();//文件大小,单位byteslong sizeBytes = Size();System.out.println("fieldName : " + fieldName);System.out.println("fileName : " + fileName);System.out.println("contentType : " + contentType);//获取文件流,存在相应的目录下is = InputStream();byte[] bytes = new byte[1024];int pos;os = new FileOutputStream(new File("/Volumes/Player/FileDire/Download/" + fileName));while( (pos = is.read(bytes)) != -1 ) {os.write(bytes, 0, pos);}System.out.println("文件上传完毕~~");System.out.println("---------------------------------------------------------------------------");}}} catch (FileUploadException e) {e.printStackTrace();} finally {if( os != null ) {os.close();}if( is != null ) {is.close();}}}
}
效果及完整源码下载:点击这里
欢迎加入QQ交流群:451826376
本文发布于:2024-02-03 04:44:53,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170690669148731.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |