struts2结合swfupload控件实现视频等大文件上传
来源:互联网 发布:base64 encode php 编辑:程序博客网 时间:2024/05/18 18:42
由于一个项目要使用struts2来接受视频文件,于是我就从网上找各种资料,最终实现了文件的上传,可是突然遇到了一个问题,那就是我发现我上传文件时只能上传图片等小文件,于是乎我就查,发现了很多网上设置文件大小的方法,我就去不断地设置,可是还是不能,最后终于发现问题不在struts2的拦截器里面,而是struts默认能上传的最大文件只有2M,因此需要更改配置文件。
上传文件可以使用html的控件(<input type="file" >),但是很不实用,根本不能实现一些特殊的功能,经过多番的对比我感觉还是SWFUpload比较好用,他的用法比较容易掌握,而且是开源的,功能很强大。
先上图吧:
选择文件:
正在上传:
上传成功
完美实现SWFUpload与struts的完美结合。
接下来就写一下实现的方法吧:
首先把swfupload.swf swfupload.js放入项目包中,让后把配置struts,
<struts><constant name="struts.devMode" value="true" /><constant name="struts.i18n.encoding" value="UTF-8" /><constant name="struts.multipart.maxSize" value="1000000000" /><!-- 这个是更改struts默认文件大小的配置,默认为2M--><package name="default" namespace="/" extends="struts-default"><action name="upload" class="org.swf.Upload"><interceptor-ref name="fileUpload"><param name="maximumSize">102400000</param><!-- 这个是更改struts拦截器拦截文件大小--></interceptor-ref><result name="success">/Hello.jsp</result><result name="input">/index.jsp</result><interceptor-ref name="defaultStack" /></action></package></struts>
接下来便是index.jsp的内容:
首先是swf的初始化:
<script type="text/javascript">var swfu;window.onload = function() {var settings = {flash_url : "swfupload.swf",flash9_url : "swfupload_fp9.swf",upload_url : "upload.action",//指向web项目下的名为upload的actionfile_size_limit : "10000 MB",//设置文件大小file_types : "*.*",//上传文件的类型file_types_description : "All Files",file_upload_limit : 100,file_queue_limit : 0,//debug : false,// Button settingsbutton_image_url : "images/XPButtonUploadText_61x22.png",button_width : "61",button_height : "22",//设置按钮大小,注意一定要写button_placeholder_id : "spanButtonPlaceHolder",moving_average_history_size : 40,// 这里是各种触发事件,这些事件都在js中响应,一般写在handle.js中//在触发这些事件对js进行加载swfupload_preload_handler : preLoad,//预载文件swfupload_load_failed_handler : loadFailed,//加载文件失败file_queued_handler : fileQueued,//用于处理选择文件后触发的事件file_dialog_complete_handler : fileDialogComplete,//用于处理选择文件后触发的事件upload_start_handler : uploadStart,//用于处理文件开始上传upload_progress_handler : uploadProgress,upload_success_handler : uploadSuccess,//上传成功处理upload_complete_handler : uploadComplete,//上传完成处理};swfu = new SWFUpload(settings);};</script>
接下来便是上传按钮:
<div class="marginright">
<span id="spanButtonPlaceHolder"></span>
<button id="bt" onclick="swfu.startUpload()" style="width: 61px; height: 22px;" >上传</button>
</div>
第一个用来选择文件,第二个用来调用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 = "<input name='textname" + j + "' id='textname" + j
+ "' type='text' size='20' />";
y2.innerHTML = "<input name='size" + j + "' id='size" + j
+ "' type='text' size='20' />";
y3.innerHTML = "<input name='speed" + j + "' id='speed" + j
+ "' type='text' size='20' />";
y4.innerHTML = "<input name='remain" + j + "' id='remain" + j
+ "' type='text' size='20' />";
y5.innerHTML = "<input name='present" + j + "' id='present" + j
+ "' type='text' size='20' />";
y6.innerHTML = "<input name='state" + j + "' id='state" + j
+ "' type='text' size='20' />";
}
这是动态添加表格的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;
}
}
- struts2结合swfupload控件实现视频等大文件上传
- java struts2结合swfupload实现上传文件的demo教程
- 利用SWFupload实现表单上传大文件
- swfupload上传大文件
- SWFUpload 上传文件控件
- 利用SWFUpload V2.2.0 免费控件进行大文件上传!
- Struts2+swfUpload 批量上传文件
- Swfupload实现多文件上传
- Swfupload实现多文件上传
- struts2结合uploadify3.2实现文件上传
- plupload上传视频等大文件
- JQuery上传控件uploadify结合Struts2多文件上传
- Extjs4.2+struts2+swfupload多文件上传
- asp.net用swfupload上传大文件
- 利用swfupload上传大文件汉化版
- Nginx+PHP+Swfupload 上传大文件
- swfupload多文件上传控件的使用
- swfupload多文件上传控件的使用
- Problem : 1412 ( {A} + {B} )
- Tomcat集群搭建超详细
- 高清晰度的iPhone和iPod touch(单位:像素)
- [leetcode]surrounded regions
- 30分钟学习STL
- struts2结合swfupload控件实现视频等大文件上传
- android shell命令以及Linux常用命令.(以后就不用东奔西走的找了)
- 收集一些Java服务端推送技术实例
- 黑马程序员-io流输入与输出的若干总结
- php-单例模式和工厂模式
- java 类的初始化
- <<The C Programming Language>>学习之路-练习题参考答案 1-8
- c函数之【进程通信(IPC)函数】
- tomcat集群调优