1. Idéias para fazer upload de arquivos de struts
Eu também falei sobre o componente FileUpload antes. Tem funções poderosas, mas a operação é complicada e complicada. Desta vez, os uploads de arquivos também são suportados no StraUS e o FileUpload são embalados, o que é muito mais conveniente de usar.
Aí vem uma etiqueta e uma aula:
<html: arquivo de arquivo = "correspondente ao nome da propriedade em ação">>
Use esta tag para fazer upload de arquivos, mas para receber o conteúdo, você deve confiar no org.apache.struts.upload.formfile
A interface está concluída.
2. Realização
sh.jsp:
<%@ página de página = "java" import = "java.util. uri = "http://jakarta.apache.org/struts/tags-html" prefix = "html"%> <%@ taglib uri = "http://jakarta.apache.org/stuts/tags-logic" prefix = "Logic"%> Html 4.01 transitória // pt "> <html> <head> <title> sh.jsp </title> <meta http-equiv =" content-type "content =" text/html; <html: arquivo de arquivo = "foto"> </html: file> <html: submit value = "upload"> </html: submit> </html: form> </body> </html>
UploadForm.java:
pacote com.zyy.struts.form; importar org.apache.struts.action.actionForm; importar org.apache.struts.upload.formfile; public class uploadform estende a ação da ação {private formFile; public FormFile getphoto () {return photo; } public void setphoto (FormFile Photo) {this.photo = foto; }} Iptimestamp.java:
pacote com.zyy.util; importar java.text.simpledEformat; importar java.util.date; importar java.util.random; public Class iptimestamp {private SimpleDateFormat sdf = null; String privada ip = nulo; 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 <comprimento; i ++) {buf.append (this.addzero (s [i], 3)); }} buf.append (this.gettimestamp ()); Aleatório r = novo aleatório (); for (int i = 0; i <3; i ++) {buf.append (r.nextint (10)); } retornar buf.toString (); } public String getDate () {this.sdf = new SimpleDateFormat ("AAAA-MM-DD HH: MM: SS.SSS"); Retorne this.sdf.format (new Date ()); } public string gettimestamp () {this.sdf = new SimpleDateFormat ("yyyymmddhhmmsssss"); Retorne 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"). getiptimerrand ()); }}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; importar org.apache.struts.action.actionForm; importar org.apache.struct.action.action.forward; importar org.apache.structs.action.actionMapping; importar.ptionAt.TeCtUtAltion.Struct.form.Form.UPLOAD; IMPROTIONY.ZYY.UTILTORMATELFORTATILTATILLATIONSTRUCTROTILL EXTRUCTILTATIONS. FORM, HTTPSERVLETREQUEST Solicitação, httpServletResponse Response) lança exceção {uploadForm uploadForm = (uploadForm) formulário; Iptimestamp ips = new iptimestamp (request.getRemoteaddr ()); // Nome do arquivo string filename = ips.getiptimerand () + "." + uploadForm.getphoto (). getFilename (). split ("//. // File de saída de caminho de saída outfile = novo arquivo (super.getServlet (). GetServletContext () .getRealPath ("/") + "upload" + file.separator + nome do arquivo); // a pasta em que a imagem é armazenada arquivo de arquivo = novo arquivo (super.getServlet (). GetServletContext () .getRealPath ("/") + "upload"); if (! file.exists ()) {file.mkdir (); } InputStream input = uploadForm.getphoto (). GetInputStream (); OutputStream Output = new FileOutputStream (outfile); dados de bytes [] = novo byte [1024]; int temp = 0; while ((temp = input.read (dados, 0, 1024))! = -1) {output.Write (Data); } output.Close (); input.Close (); retornar nulo; }}struts-config.xml:
<? xml versão = "1.0" coding = "ISO-8859-1"?> <! <form-beans> <form-bean name = "uploadform" type = "com.zyy.struts.form.uploadform"> </form-bean> </morm-beans> <lobal-exceptions> </global-exceptions> <lobal-forwards> </lobal-forwards> <ction-mappings> <action = "/jsppuster/up do attrarget> </forwards> <ction-mappings> <action ="/jsppuster/up do attrarget> </forwards> <ction-mappings> <Action = "/jsppuster/up do Atttrish./JSPPUT/JSPPUPT/JSPPUTONFORM> </action ="/jsppuster "/jsppuster"/JSPPUPTION) name = "uploadform" scope = "request" type = "com.zyy.struts.action.uploadaction"> </action> </action-mappings> <message-resources parameter = "Resource.MessageSources"/> </struts-config>
Como o que estou economizando é super.getServlet (). GetServletContext (). GetRealPath ("/")+ "upload"
Este é o caminho real do diretório virtual na pasta de upload.
Pode -se observar que o princípio do upload de arquivos no Struts é o mesmo que o FileUpload, mas o Struts é embalado, por isso é obviamente muito mais conveniente de usar do que usar o componente FileUpload sozinho.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.