⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileuploadcontroller.jpf

📁 网络音乐下载上传网站
💻 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 + -