1. Ideas for uploading Struts files
I have also talked about the FileUpload component before. It has powerful functions, but the operation is complicated and complicated. This time, file uploads are also supported in Strust and FileUpload is packaged, which is much more convenient to use.
Here comes a tag and a class:
<html:file property="corresponding to property name in ActionForm">
Use this tag to upload files, but to receive contents, you must rely on org.apache.struts.upload.FormFile
The interface is completed.
2. Realization
sh.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%><%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>sh.jsp</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body> <html:form action="/jsp/upload.do" method="post" enctype="multipart/form-data"> <html:file property="photo"></html:file> <html:submit value="upload"></html:submit> </html:form></body></html>
UploadForm.java:
package com.zyy.struts.form;import org.apache.struts.action.ActionForm;import org.apache.struts.upload.FormFile;public class UploadForm extends ActionForm { private FormFile photo; public FormFile getPhoto() { return photo; } public void setPhoto(FormFile photo) { this.photo = photo; }} IPTimeStamp.java:
package com.zyy.util;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class IPTimeStamp { private SimpleDateFormat sdf = null; private String ip = null; public IPTimeStamp() { } public IPTimeStamp(String ip) { this.ip = ip; } public String getIPTimeRand() { StringBuffer buf = new StringBuffer(); if (this.ip != null) { String s[] = this.ip.split("//."); for (int i = 0; i < s.length; i++) { buf.append(this.addZero(s[i], 3)); } } buf.append(this.getTimeStamp()); Random r = new Random(); for (int i = 0; i < 3; i++) { buf.append(r.nextInt(10)); } return buf.toString(); } public String getDate() { this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); return this.sdf.format(new Date()); } public String getTimeStamp() { this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); return this.sdf.format(new Date()); } private String addZero(String str, int len) { StringBuffer s = new StringBuffer(); s.append(str); while (s.length() < len) { s.insert(0, "0"); } return s.toString(); } public static void main(String args[]) { System.out.println(new IPTimeStamp("192.168.1.1").getIPTimeRand()); }}UploadAction.java:
package com.zyy.struts.action;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.structs.action.ActionForward;import org.apache.structs.action.ActionMapping;import com.zyy.structs.form.UploadForm;import com.zyy.util.IPTimeStamp;public class UploadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UploadForm uploadForm = (UploadForm) form; IPTimeStamp ips = new IPTimeStamp(request.getRemoteAddr()); // File name String fileName = ips.getIPTimeRand() + "." + uploadForm.getPhoto().getFileName().split("//.")[uploadForm.getPhoto().getFileName().split("//.").length - 1]; // Output path File outFile = new File(super.getServlet().getServletContext() .getRealPath("/") + "upload" + File.separator + fileName); // The folder where the picture is stored File file = new File(super.getServlet().getServletContext() .getRealPath("/") + "upload"); if (!file.exists()) { file.mkdir(); } InputStream input = uploadForm.getPhoto().getInputStream(); OutputStream output = new FileOutputStream(outFile); byte data[] = new byte[1024]; int temp = 0; while ((temp = input.read(data, 0, 1024)) != -1) { output.write(data); } output.close(); input.close(); return null; }}struts-config.xml:
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config> <form-beans> <form-bean name="uploadForm" type="com.zyy.struts.form.UploadForm"></form-bean> </form-beans> <global-exceptions> </global-exceptions> <global-forwards> </global-forwards> <action-mappings> <action path="/jsp/upload" attribute="uploadForm" input="/jsp/sh.jsp" name="uploadForm" scope="request" type="com.zyy.struts.action.UploadAction"> </action> </action-mappings> <message-resources parameter="resource.MessageResources" /></struts-config>
Since what I'm saving in is super.getServlet().getServletContext().getRealPath("/")+ "upload"
This is the real path of the virtual directory under the upload folder.
It can be seen that the principle of file upload in Struts is the same as FileUpload, but Struts is packaged, so it is obviously much more convenient to use than using the FileUpload component alone.
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.