📄 fileuploadcontroller.jpf
字号:
package fileUpload;
import java.io.*;
import com.bea.wlw.netui.pageflow.FormData;
import com.bea.wlw.netui.pageflow.Forward;
import com.bea.wlw.netui.pageflow.PageFlowController;
import java.util.Date;
import org.apache.struts.upload.FormFile;
/**
* @jpf:controller
* @jpf:view-properties view-properties::
* <!-- This data is auto-generated. Hand-editing this section is not recommended. -->
* <view-properties>
* <pageflow-object id="pageflow:/fileUpload/FileUploadController.jpf"/>
* <pageflow-object id="action:begin.do">
* <property value="40" name="x"/>
* <property value="140" name="y"/>
* </pageflow-object>
* <pageflow-object id="action:uploadFile.do#fileUpload.FileUploadController.UploadForm">
* <property value="260" name="x"/>
* <property value="140" name="y"/>
* </pageflow-object>
* <pageflow-object id="action-call:@page:browseFile.jsp@#@action:uploadFile.do#fileUpload.FileUploadController.UploadForm@">
* <property value="196,210,210,224" name="elbowsX"/>
* <property value="131,131,131,131" name="elbowsY"/>
* <property value="East_1" name="fromPort"/>
* <property value="West_1" name="toPort"/>
* </pageflow-object>
* <pageflow-object id="page:browseFile.jsp">
* <property value="160" name="x"/>
* <property value="140" name="y"/>
* </pageflow-object>
* <pageflow-object id="action-call:@page:success.jsp@#@action:begin.do@">
* <property value="224,40,40,40" name="elbowsX"/>
* <property value="31,31,63,95" name="elbowsY"/>
* <property value="West_1" name="fromPort"/>
* <property value="North_1" name="toPort"/>
* </pageflow-object>
* <pageflow-object id="page:success.jsp">
* <property value="260" name="x"/>
* <property value="40" name="y"/>
* </pageflow-object>
* <pageflow-object id="action-call:@page:failure.jsp@#@action:begin.do@">
* <property value="224,40,40,40" name="elbowsX"/>
* <property value="231,231,208,185" name="elbowsY"/>
* <property value="West_1" name="fromPort"/>
* <property value="South_1" name="toPort"/>
* </pageflow-object>
* <pageflow-object id="page:failure.jsp">
* <property value="260" name="x"/>
* <property value="240" name="y"/>
* </pageflow-object>
* <pageflow-object id="forward:path#success#browseFile.jsp#@action:begin.do@">
* <property value="76,100,100,124" name="elbowsX"/>
* <property value="131,131,131,131" name="elbowsY"/>
* <property value="East_1" name="fromPort"/>
* <property value="West_1" name="toPort"/>
* <property value="success" name="label"/>
* </pageflow-object>
* <pageflow-object id="forward:path#success#success.jsp#@action:uploadFile.do#fileUpload.FileUploadController.UploadForm@">
* <property value="260,260,260,260" name="elbowsX"/>
* <property value="95,90,90,85" name="elbowsY"/>
* <property value="North_1" name="fromPort"/>
* <property value="South_1" name="toPort"/>
* <property value="success" name="label"/>
* </pageflow-object>
* <pageflow-object id="forward:path#failure#failure.jsp#@action:uploadFile.do#fileUpload.FileUploadController.UploadForm@">
* <property value="260,260,260,260" name="elbowsX"/>
* <property value="185,190,190,195" name="elbowsY"/>
* <property value="South_1" name="fromPort"/>
* <property value="North_1" name="toPort"/>
* <property value="failure" name="label"/>
* </pageflow-object>
* <pageflow-object id="formbeanprop:fileUpload.FileUploadController.UploadForm#theFile#org.apache.struts.upload.FormFile"/>
* <pageflow-object id="formbean:fileUpload.FileUploadController.UploadForm"/>
* </view-properties>
* ::
*/
public class FileUploadController extends PageFlowController
{
private final int MAX_FILE_SIZE = 10485760; // 10MB
public String strFile;
public String strFileName;
public String errorMessage;
// Uncomment this declaration to access Global.app.
//
// protected global.Global globalApp;
//
// For an example of page flow exception handling see the example "catch" and "exception-handler"
// annotations in {project}/WEB-INF/src/global/Global.app
/**
* This method represents the point of entry into the pageflow
* @jpf:action
* @jpf:forward name="success" path="browseFile.jsp"
*/
protected Forward begin()
{
return new Forward("success");
}
/**
* @jpf:action
* @jpf:forward name="success" path="success.jsp"
* @jpf:forward name="failure" path="failure.jsp"
*/
protected Forward uploadFile(UploadForm form)
{
strFileName = form.theFile.getFileName().trim();
if(strFileName.equals("")) {
errorMessage = "File not specified.";
return new Forward("failure");
}
System.out.println("File name: " + strFileName);
System.out.println("File size: " + form.theFile.getFileSize());
// 获得文件大小:
if(form.theFile.getFileSize() > MAX_FILE_SIZE) {
errorMessage = "File is larger than 10MB.";
return new Forward("failure");
}
// 文件存放路径,最好在配置文件中读取,
// 这里为简化,硬编码为"C:\\temp\\"
String uploadPath = "C:\\temp\\";
// 根据客户IP和当前时间生成一个不重复的文件名:
String destFileName = uploadPath + getRequest().getRemoteAddr()
+ "@" + new Date().getTime() + "@" + strFileName;
System.out.println("Save as: " + destFileName);
DataInputStream in = null;
DataOutputStream out = null;
boolean success = false;
try {
in = new DataInputStream(new BufferedInputStream(form.theFile.getInputStream()));
out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(destFileName)));
int n = (-1);
byte[] buf = new byte[1024];
while((n=in.read(buf))!=(-1)) {
out.write(buf, 0, n);
}
success = true;
}
catch(IOException ioe) {
errorMessage = ioe.getMessage();
ioe.printStackTrace();
}
finally {
if(out!=null) {
try {
out.close();
}catch(Exception e) {}
}
if(in!=null) {
try {
in.close();
}catch(Exception e) {}
}
// 如果上传失败就删掉此文件:
if(!success) new File(destFileName).delete();
}
// 根据成功与否决定导向的页面:
return new Forward(success ? "success" : "failure");
}
/**
* FormData get and set methods may be overwritten by the Form Bean editor.
*/
public static class UploadForm extends FormData
{
private FormFile theFile;
public void setTheFile(FormFile theFile)
{
this.theFile = theFile;
}
public FormFile getTheFile()
{
return this.theFile;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -