在Struts 2的同一页上传文件的详细信息
问题描述:
我可以使用struts2上传文件。 但我想显示支柱2.在Struts 2的同一页上传文件的详细信息
我试图让使用<s:property value="myFile" />
标签, 详细资料上传文件的详细信息(Filename
,filesize
,filetype
),但始终显示[对象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
文件
答
要上传改变你的行动结果后显示在同一页面文件的详细信息:
<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,如果你想重新获得它,你必须重新加载它。
你是不是混凝土。上传和上传是不同的流量。你什么时候需要显示关于文件的细节?上传文件后 – 2013-02-15 10:06:52
我想显示有关该文件的详细信息。 ,并且还希望显示“您的文件已成功上传”等通知。 – krunal 2013-02-15 10:10:45