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

📄 fileaction.java

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

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

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 org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class FileAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest req, HttpServletResponse resp)
			throws Exception {
		// TODO Auto-generated method stub
		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
			ProgressListener progressListener = new ProgressListener(){
			   private long megaBytes = -1;
			   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) {
			           System.out.println("So far, " + pBytesRead + " bytes have been read.");
			       } else {
			           System.out.println("So far, " + pBytesRead + " of " + pContentLength
			                              + " bytes have been read.");
			       }
			   }
			};
			upload.setProgressListener(progressListener);

			try {
				List items = upload.parseRequest(req);
				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();
			}

		}
        return null;
	}

	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();
				}

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

	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);
		}
	}


}

⌨️ 快捷键说明

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