⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileuploadaction.java

📁 文件上传
💻 JAVA
字号:
package actions;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

import javax.servlet.RequestDispatcher;
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.FileUploadException;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import java.io.File;
import java.util.Iterator;
import java.util.List;

public class FileUploadAction extends HttpServlet implements ProgressListener {

	PrintWriter out;
	 private long megaBytes = -1;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		// Check that is have a file request
		resp.setContentType("text/html; charset=UTF-8");
		 out= resp.getWriter();
		boolean isMultipart = ServletFileUpload.isMultipartContent(req);
		if (isMultipart) {
			// 创建DiskFileItemFactory
			DiskFileItemFactory factory = new DiskFileItemFactory();

			// //设置上传文件的大小范围,单位:bytes
			// factory.setSizeThreshold(6000);
			// //设置上传文件的路径
			// factory.setRepository(new File("d://"));
			// 创建文件上传控制器
			ServletFileUpload upload = new ServletFileUpload(factory);
			upload.setHeaderEncoding("utf-8");
			// 设置文件大小
			upload.setSizeMax(50000000);
			//Create a progress listener
	
			upload.setProgressListener(this);

			try {
				List items = upload.parseRequest(req);
				for(int i=0;i<items.size();i++)
				{
					FileItem item = (FileItem) items.get(i);

					if (item.isFormField()) {
						processFormField(item);
					} else {
						processUploadedFile(item);
					}
				}
// Iterator iterator = items.iterator();
//				
//				if (iterator.hasNext()) {
//					FileItem item = (FileItem) iterator.next();
//
//					if (item.isFormField()) {
//						processFormField(item);
//					} else {
//						processUploadedFile(item);
//					}
//
//				}
			} catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
		out.println("<script>parent.callback('upload file success')</script>");
	}

	private void processUploadedFile(FileItem item) {
		// TODO Auto-generated method stub
		// Process a file upload
		if (!item.isFormField()) {
			String fieldName = item.getFieldName();
			String fileName = item.getName();
			String contentType = item.getContentType();
			boolean isInMemory = item.isInMemory();
			long sizeInBytes = item.getSize();
            
			boolean writeToFile = true;
			if (writeToFile) {
				File uploadedFile = new File("d://jsp.rar");
				try {
					item.write(uploadedFile);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			} else {
				InputStream uploadedStream;
				try {
					uploadedStream = item.getInputStream();
					uploadedStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
			String str="fileName:" + fileName + " fieldName:"
			+ fieldName + " contentType:" + contentType
			+ " isInMemory:" + isInMemory + " sizeInBytes:"
			+ sizeInBytes;
			System.out.println(str);
		}
	}

	private void processFormField(FileItem item){
		// TODO Auto-generated method stub
		// Process a regular form field
		if (item.isFormField()) {
			
			String name = item.getFieldName();
			String value = item.getString();
			System.out.println(name + " :" + value);
		}
	}

	public void update(long pBytesRead, long pContentLength, int pItems) {
	       long mBytes = pBytesRead / 1000000;
	       if (megaBytes == mBytes) {
	           return;
	       }
	       megaBytes = mBytes;
	       System.out.println("We are currently reading item " + pItems);
	       if (pContentLength == -1) {
	    	   String str="So far, " + pBytesRead + " bytes have been read.";
	    	   System.out.println("<script>parent.callback('"+str+"')</script>");
	           
	       } else {
	    	   String str="So far, " + pBytesRead + " bytes have been read.";
	    	   System.out.println("<script>parent.callback('"+str+"')</script>");
	       }
	   }

	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -