java基于servlet利用common-fileupload上传文件
2016-08-29 10:30
337 查看
例子是servlet下的上传,利用common-fileupload
import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.RandomAccessFile; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import java.util.Iterator; import java.util.List; import java.util.RandomAccess; import java.util.UUID;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { //文件写入位置 long nPos=0; //获取FileItem的的文件流 InputStream iStream=null; // 判断enctype属性是否为multipart/form-data boolean isMultipart = ServletFileUpload.isMultipartContent(request); //临时目录名 String tempPath = "d:\\temp\\";//"./TempPath/"; //真实目录名 String filePath = "d:\\upload\\";//"./UploadFile/"; //真实上传路径 StringBuffer sbRealPath = new StringBuffer(); // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // 当上传文件太大时,因为虚拟机能使用的内存是有限的,所以此时要通过临时文件来实现上传文件的保存 // 此方法是设置是否使用临时文件的临界值(单位:字节) factory.setSizeThreshold(5*1024); // 与上一个结合使用,设置临时文件的路径(绝对路径) factory.setRepository(new File(tempPath)); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传内容的大小限制(单位:字节) upload.setSizeMax(Integer.valueOf(1)*1024*1024);//1MB // Parse the request List<?> items = upload.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { //如果是普通表单字段 String name = item.getFieldName(); String value = item.getString(); //处理普通表单字段 nPos=Integer.parseInt(value); } else { //如果是文件字段 String fieldName = item.getFieldName(); String fileName = item.getName(); String contentType = item.getContentType(); //创建文件唯一名称 String uuid = UUID.randomUUID().toString(); //检查文件后缀格式 String fileExpansion = fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase(); //真实上传路径 sbRealPath.append(filePath).append(fileName).append(".").append(fileExpansion); System.out.println(sbRealPath.toString()); boolean isInMemory = item.isInMemory(); long receiveSize = item.getSize(); //获取文件流 iStream = item.getInputStream(); //写入文件 //File uploadedFile = new File(sbRealPath.toString()); //item.write(uploadedFile); } } //写入到文件 RandomAccessFile oSavedFile = new RandomAccessFile(sbRealPath.toString(),"rw"); // 定位文件指针到 nPos 位置 oSavedFile.seek(nPos); System.out.println(nPos); byte[] b = new byte[1024]; int nRead; // 从输入流中读入字节流,然后写到文件中 while((nRead=iStream.read(b,0,1024)) > 0) { oSavedFile.write(b,0,nRead); } //获取当前文件写入位置 long filePosition = oSavedFile.getFilePointer(); System.out.println(filePosition); iStream.close(); oSavedFile.close(); //返回接收到的字节长度 response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.print(filePosition); out.flush(); out.close(); } catch(Exception e) { System.out.println(e.getMessage()); } }
相关文章推荐
- 【java】利用servlet解析报文,上传文件
- [JAVA]彻底抛弃 jspSmartUpload,使用 common-fileupload 实现文件上传
- 使用common-fileUpload和 Spring中MultipartHttpServletRequest实现文件上传
- JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现
- JAVA Server上传文件 Spring MultipartResolver 或者 ServletFileUpload
- servlet文件上传(2)---》利用commons-fileupload组件
- JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现
- 使用servlet实现文件上传(用common-fileUpload和common-io包)
- Java上传文件common-fileupload
- Java文件上传组件 common-fileUpload 使用教程
- servlet利用fileupload实现文件上传
- Java common-fileupload 文件上传
- java基于servlet使用组件smartUpload实现文件上传
- Java文件上传组件 common-fileUpload 使用
- 利用ServletFileUpload组件上传文件
- 利用commons-fileupload在servlet中实现文件上传
- 利用Common-Fileupload上传文件图片
- 【JavaWeb-13】文件上传DiskFileItemFactory、ServletFileUpload以及注意事项、文件下载及注意事项
- java使用common-fileupload实现文件上传
- java基于servlet的文件异步上传