在Struts 2的同一页上传文件的详细信息

问题描述:

我可以使用struts2上传文件。 但我想显示支柱2.在Struts 2的同一页上传文件的详细信息

我试图让使用<s:property value="myFile" />标签, 详细资料上传文件的详细信息(Filenamefilesizefiletype),但始终显示[对象HTMLDocument的。

我的代码如下。

uploadfile.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
       pageEncoding="ISO-8859-1"%> 
      <%@ taglib prefix="s" uri="/struts-tags"%> 
      <!DOCTYPE html> 

      <html> 
      <head> 
       <meta charset="utf-8"> 

      </head> 
      <body> 
       <div id="success-image"> 
       <s:property value="myFile" /> 
      <s:head theme="ajax" /> 
       <s:form id="asset-upload" name="asset-upload" action="uploadFile.action" method="POST" theme="ajax" enctype="multipart/form-data"> 
       <s:file name="myFile" label="Upload Image"/> 
     <s:submit targets="success-image" showLoadingText="false" indicator="uploading-image" id="asdf"/> 
    </s:form> 
     </div> 
      </body> 
      </html> 

struts.xml

<?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE struts PUBLIC 
     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
     "http://struts.apache.org/dtds/struts-2.0.dtd"> 

    <struts> 
     <constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
     <constant name="struts.devMode" value="false" /> 
     <constant name="struts.multipart.maxSize" value="1000000000" /> 

     <package name="default" extends="struts-default,json-default" namespace="/"> 
      <action name="uploadFile" class="com.isam.struts.uploadFile"> 
       <result name="success"> 
        <param name="myFile">myFile</param> 
       </result> 
       <result name="error">login.jsp</result> 
      </action> 

      <action name="autoCompleterList" class="com.isam.struts.AutoCompleterList"> 
       <result type="json" /> 
      </action> 
     </package> 
    </struts> 

UploadFile.java

 package com.isam.struts; 

     import java.io.File; 
     import java.io.IOException; 

     import org.apache.commons.io.FileUtils; 

     import com.opensymphony.xwork2.ActionSupport; 

     public class uploadFile extends ActionSupport { 

      private File myFile; 
      private String myFileContentType; 
      private String myFileFileName; 
      private String destPath; 


      public String execute() { 
       /* Copy file to a safe location */ 
       destPath = "C:/temp/"; 

       try { 
        System.out.println("Src File name: " + myFile); 
        System.out.println("Dst File name: " + myFileFileName); 

        File destFile = new File(destPath, myFileFileName); 
        FileUtils.copyFile(myFile, destFile); 

       } catch (IOException e) { 
        e.printStackTrace(); 
        return ERROR; 
       } 

       return SUCCESS; 
      } 

      public File getMyFile() { 
       return myFile; 
      } 

      public void setMyFile(File myFile) { 
       this.myFile = myFile; 
      } 

      public String getMyFileContentType() { 
       return myFileContentType; 
      } 

      public void setMyFileContentType(String myFileContentType) { 
       this.myFileContentType = myFileContentType; 
      } 

      public String getMyFileFileName() { 
       return myFileFileName; 
      } 

      public void setMyFileFileName(String myFileFileName) { 
       this.myFileFileName = myFileFileName; 
      } 

     } 

所以我需要在JSP文件添加到节目细节, 什么我应该需要在struts.xml文件

+0

你是不是混凝土。上传和上传是不同的流量。你什么时候需要显示关于文件的细节?上传文件后 – 2013-02-15 10:06:52

+0

我想显示有关该文件的详细信息。 ,并且还希望显示“您的文件已成功上传”等通知。 – krunal 2013-02-15 10:10:45

要上传改变你的行动结果后显示在同一页面文件的详细信息:

<action name="uploadFile" class="com.isam.struts.uploadFile"> 
    <result name="success">uploadfile.jsp</result> 
    <result name="error">login.jsp</result> 
</action> 

而且在JSP中使用<s:property>标记来显示值:

<s:property value="myFile.length()"/> 
<s:property value="myFileContentType"/> 
<s:property value="myFileFileName"/> 

添加在uploadFile动作你需要把对信息和getter setter方法的结果显示它是什么。

public void setUpload(File myFile) { 
    this.myFile= myFile; 
} 

public void setUploadContentType(String myFileContentType) { 
    this.myFileContentType= myFileContentType; 
} 

public void setUploadFileName(String myFileFileName) { 
    this.myFileFileName = myFileFileName; 
} 


public String getMyFileFileName() { 
    return myFileFileName; 
} 

public String getMyFileSize() { 
    return myFile.length(); 
} 

public String getMyFileContentType() { 
    return myFileContentType; 
} 

它命名为注射,你可以进一步与

<s:property value="myFileName" /> 

<s:property value="myFileSize" /> 

<s:property value="myFileContentType" /> 

显示如果文件扩展名,你可以从myFile检查它的值。如果它有一个图像类型,那么你应该使用编解码器来获取它和尺寸。但是,这不是必需的。获得BufferedImage后,您可以写入或缩放到任何图像类型或大小。

结果“成功”有什么不对?结果应该是通过id参数映射的重定向动作的正常URL,如果你想重新获得它,你必须重新加载它。