SWFUpload+struts2 进度条

本文详细解析了一个将多个案例结合、修改错误、补充不足后的代码实例,包括JSP页面和Java后端逻辑。重点介绍了文件上传功能的实现,通过Swfupload对象进行配置,设置上传路径、文件大小限制、类型等参数,并提供了详细的文件处理流程,从读取文件到实际上传至服务器的过程。同时,展示了如何通过ServletActionContext获取请求的真正路径来处理文件存储。

本案例非本人的原创,是我把多个案例结合,修改其中的错误,补充其中的不足后的代码。

jsp 代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <link href="<%=basePath%>css/default.css" rel="stylesheet" type="text/css" />
       <script type="text/javascript" src="<%=basePath%>js/swfupload.js"></script>
       <script type="text/javascript" src="<%=basePath%>js/swfupload.queue.js"></script>
    <script type="text/javascript" src="<%=basePath%>js/fileprogress.js"></script>
    <script type="text/javascript" src="<%=basePath%>js/handlers.js"></script>
       <!-- 初始化swfupload 对象-->
   <script type="text/javascript">
        var upload1, upload2;

        window.onload = function() {
            upload1 = new SWFUpload({

                //提交路径
                upload_url: "upload.action",
                //向后台传递额外的参数
                post_params: {"name" : "kaobian"},
                //上传文件的名称
                file_post_name: "file",
               
                // 下面自己按照字面意思理解
                file_size_limit : "102400",    // 100MB
                file_types : "*.*",
                file_types_description : "All Files",
                file_upload_limit : "10",
                file_queue_limit : "0",

                // 事件处理
                file_dialog_start_handler : fileDialogStart,
                file_queued_handler : fileQueued,
                file_queue_error_handler : fileQueueError,
                file_dialog_complete_handler : fileDialogComplete,
                upload_start_handler : uploadStart,
                upload_progress_handler : uploadProgress,
                upload_error_handler : uploadError,
                upload_success_handler : uploadSuccess,
                upload_complete_handler : uploadComplete,

                // 按钮的处理
                button_image_url : "images/XPButtonUploadText_61x22.png",
                button_placeholder_id : "spanButtonPlaceholder1",
                button_width: 61,
                button_height: 22,
               
                // Flash Settings
                flash_url : "js/swfupload.swf",
               

                custom_settings : {
                    progressTarget : "fsUploadProgress1",
                    cancelButtonId : "btnCancel1"
                },
               
                // Debug Settings
                debug: false
            });
         }
       
    </script>
  </head>
 
  <body>
</div>
  <div id="content">
    <form action="upload.action" method="post" name="thisform" enctype="multipart/form-data">
        <table>
            <tr valign="top">
                <td>
                    <div>
                        <div class="fieldset flash" id="fsUploadProgress1">
                            <span class="legend">文件上传</span>
                        </div>
                        <div style="padding-left: 5px;">
                            <span id="spanButtonPlaceholder1"></span>
                            <input id="btnCancel1" type="button" value="Cancel Uploads" onclick="cancelQueue(upload1);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
                            <br />
                        </div>
                    </div>
                </td>
            </tr>
        </table>
    </form>
    </div>
  </body>
</html>

 

----------------------------------

 

java代码:

 

package com.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport {
    private File file;
    private String fileFileName;
    private String fileContentType;

    public String execute() throws Exception {
        // 实现上传
        InputStream is = new FileInputStream(file);
        String root = ServletActionContext.getRequest().getRealPath("/upload");
        File deskFile = new File(root, this.getFileFileName());
        OutputStream os = new FileOutputStream(deskFile);
        byte[] bytefer = new byte[1024];
        int length = 0;
        while ((length = is.read(bytefer)) != -1) {
            os.write(bytefer, 0, length);
        }
        os.close();
        is.close();
        return "success";
    }

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }

    public String getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值