struts2结合swfupload控件实现视频等大文件上传

         由于一个项目要使用struts2来接受视频文件,于是我就从网上找各种资料,最终实现了文件的上传,可是突然遇到了一个问题,那就是我发现我上传文件时只能上传图片等小文件,于是乎我就查,发现了很多网上设置文件大小的方法,我就去不断地设置,可是还是不能,最后终于发现问题不在struts2的拦截器里面,而是struts默认能上传的最大文件只有2M,因此需要更改配置文件。

        上传文件可以使用html的控件(),但是很不实用,根本不能实现一些特殊的功能,经过多番的对比我感觉还是SWFUpload比较好用,他的用法比较容易掌握,而且是开源的,功能很强大。

      先上图吧:

struts2结合swfupload控件实现视频等大文件上传_第1张图片

选择文件:struts2结合swfupload控件实现视频等大文件上传_第2张图片

正在上传:struts2结合swfupload控件实现视频等大文件上传_第3张图片

上传成功struts2结合swfupload控件实现视频等大文件上传_第4张图片

完美实现SWFUpload与struts的完美结合。

接下来就写一下实现的方法吧:

首先把swfupload.swf swfupload.js放入项目包中,让后把配置struts,








102400000

/Hello.jsp
/index.jsp





接下来便是index.jsp的内容:

首先是swf的初始化:



接下来便是上传按钮:





第一个用来选择文件,第二个用来调用start函数开始上传。

function insRow(j) {
var x = document.getElementById('uptable').insertRow(j);
var y1 = x.insertCell(0);
var y2 = x.insertCell(1);
var y3 = x.insertCell(2);
var y4 = x.insertCell(3);
var y5 = x.insertCell(4);
var y6 = x.insertCell(5);
y1.innerHTML = "";
y2.innerHTML = "";
y3.innerHTML = "";
y4.innerHTML = "";
y5.innerHTML = "";
y6.innerHTML = "";
}

这是动态添加表格的js代码,每选一个 便能插入一行表格

最后便是struts接受传来的数据了:

package org.swf;
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.io.OutputStream;   


import com.opensymphony.xwork2.ActionSupport;
 
  
public class Upload extends ActionSupport {  
      
    //Filedata属性用来封装上传的文件  
    private File Filedata;  
      
  
    // FileName属性用来封装上传文件的文件名  
    private String Filename;  


  
    public File getFiledata() {
return Filedata;
}




public void setFiledata(File filedata) {
Filedata = filedata;
}




public String getFilename() {
return Filename;
}




public void setFilename(String filename) {
Filename = filename;
}




public String execute() throws Exception {  
        //基于myFile创建一个文件输入流  
        InputStream is = new FileInputStream(Filedata);  
        // 设置上传文件目录  
        String uploadPath ="d:/receive/" ;           
        // 设置目标文件  
        File toFile = new File(uploadPath, this.getFilename());            
        // 创建一个输出流  
        OutputStream os = new FileOutputStream(toFile);  
        //设置缓存  
        byte[] buffer = new byte[1024];  
  
        int length = 0;  
        //读取myFile文件输出到toFile文件中  
        while ((length = is.read(buffer)) > 0) {  
            os.write(buffer, 0, length);  
        }   
        System.out.println("上传文件名"+Filename);  
        //关闭输入流  
        is.close();           
        //关闭输出流  
        os.close();            
        return SUCCESS;  
    }  
  
}  


你可能感兴趣的:(struts,js)