swfupload上传文件
⑴ 火狐浏览器,SWFupload上传文件,谷歌和IE都可以,就是火狐不行
尊敬的用户,您好!很高兴为您答疑。
这个事swf内部一场,请您检查下您的flash插件是否正常启用。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
⑵ 如何解决swfupload的“
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>上传图片--${siteName}</title>
<jsp:include page="/home/head_html.jsp" flush="true" />
<script type="text/javascript" src="/myimg/.js"></script>
<link href="/uploadflash/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/uploadflash/swfupload.js"></script>
<script type="text/javascript" src="/uploadflash/swfupload.queue.js"></script>
<script type="text/javascript" src="/uploadflash/fileprogress.js"></script>
<script type="text/javascript" src="/uploadflash/handlers.js"></script>
<script type="text/javascript" src="/uploadflash/flashChecker.js"></script>
<script type="text/javascript">
var upload1;
window.onload = function() {
upload1 = new SWFUpload({
// 背景资料设置
upload_url: "/uploadflash_execute.action",
post_params: {"jsessionid":"<%=request.getSession().getId() %>"},
// 文件上传设置
file_size_limit : "15 MB", // 15MB
file_types : "*.jpg;*.gif;*.png;*.bmp",
file_types_description : "Image Files",
file_upload_limit : "0", //实例允许上传的最多文件数量,0表示允许上传的数量无限制
file_queue_limit : "0", //设置文件上传队列中等待文件的最大数量限制
// 挂事件, 所有事件处理程序在Handler.js文件
file_dialog_start_handler : fileDialogStart, //此事件在selectFile或者selectFiles调用后,文件选择对话框显示之前触发。只能同时存在一个文件对话框。
file_queued_handler : fileQueued, //当文件选择对话框关闭消失时,如果选择的文件成功加入上传队列,那么针对每个成功加入的文件都会触发一次该事件(N个文件成功加入队列,就触发N次此事件)。
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 : "/image/XPButtonUploadText_61x22.png",
button_placeholder_id : "spanButtonPlaceholder1",
button_width: 61,
button_height: 22,
// 指明swfupload.swf的位置
flash_url : "/uploadflash/swfupload.swf",
custom_settings : {
progressTarget : "fsUploadProgress1",
cancelButtonId : "btnCancel1"
},
// Debug开关
debug: false
});
//alert( getCookie('JSESSIONID'));
//upload1.addPostParam("JSESSIONID",getCookie('JSESSIONID'));
//upload1.addPostParam("PICVWE4567J",getCookie('PICVWE4567J'));
}
//获取指定名称的cookie的值
function getCookie(objName) {
var arrStr = document.cookie.split("; ");
for ( var i = 0; i < arrStr.length; i++) {
var temp = arrStr[i].split("=");
if (temp[0] == objName)
return unescape(temp[1]);
}
}
//读取所有保存的cookie字符串
function allCookie() {
var str = document.cookie;
if (str == "") {
str = "没有保存任何cookie";
}
return str;
}
function start_() {
upload1.startUpload();
}
function cancelUpload() {
upload1.cancelUpload();
//upload1.disappear();
//var file;
//alert(upload1.queue );
//while((file=upload1.getFile())!=null){
// file.cancelUpload();
//}
}
</script>
</head>
<body>
<jsp:include page="/home/head.jsp" flush="true" />
<jsp:include page="/home/menu-upload.jsp" flush="true" />
<table align="center" cellpadding="0" cellspacing="0" border="0" width="880" class="main">
<tr>
<td class="bor_4" style="padding:10px;">
总空间:${user.all_space_str} -- 已用空间:${user.use_space_str}
单个图片不能超过 15M,可以上传 gif , jpg , png , bmp 类型的文件
<span id="flashPlayInstall"></span>
<br/>
<br/>
<div id="content">
<form id="form1" action="/uploadflash_execute.action" method="post" 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="取消上传" onclick="cancelQueue(upload1);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
<input id="" type="button" value="开始上传" onclick="start_()"/>
<input id="" type="hidden" value="清空" onclick="cancelUpload()"/>
<br />
</div>
</div>
</td>
</tr>
</table>
</form>
</div>
</td>
</tr>
</table>
<jsp:include page="/home/foot.jsp" flush="true" />
<script type="text/javascript">
var fls = flashChecker();
var s = "";
if (fls.f){ //fls.f
$('#flashPlayInstall').text("您已经安装了flash,版本为: " + fls.v);
}else{
var msg="<span style='color:red;'>您未安装Flash Player 9(以上),安装后才能批量上传</span>"
+" <a href='/soft/flash_player_10_IE.zip'>下载</a>";
$('#flashPlayInstall').html(msg);
}
</script>
</body>
</html>
⑶ SWFUpload 上传任意文件类型如何设置
上传类型可以用 *.* 或者就一个*。
(大小限制,我试试,没用过那么大的。)
试过了,可以传1G的;文档里的意思是没有大小限制(当然,只是在浏览器端,不是在服务器端)。
--------
//创建SWFUpload的实例时,加入参数
file_size_limit : "1024MB",//设置文件大小限制
file_types : "*.*;",//设置文件类型
⑷ SWFUpload 文件上传插件常用的配置讲解
上传文件swfUpload 插件:
基本的文件上传涉及到的四个文件 (还有一个处理数据的php文件 这里没有涉及到)
html页面:
upload_window.html
js文件:
swfupload.js
handlers.js
fileprogress.js
第一:从html页晌败面出发:
重要的是将页面加载时间中的var setting={}这个大对象中的参数设置好 以下都是这个对象里面的常用配置 非常重要
首先需要将swfupload.swf加载
在 var setting={} 这个大对象里面加flash_url:值
如: flash_url: "<tpl>$siteurl_static</tpl>/assets/uc/js/swfupload.swf",
然后需要将上传的路径加入 如: upload_url: "http://load.zom.com/u.do?uploadkey=" + uploadkey + "&ck=" + ck + "&cc=" + cc,(java的上传路径)
相关的设置常用的有:
file_size_limit (设置上传的大小) file_types(设置文件上传的类型)file_types_description(设置文件上传描述)
file_upload_limit (设置文件上传的数量限制)file_queue_limit (设置文件队列数量限制)
prevent_swf_caching : false (在相关的swf文件增加随机参数避免Flash被缓存)
debug:false
按钮的相关配置:
button_width: "200",
button_height: "50",
button_text_left_padding: 16,
button_text_top_padding: 7,
button_cursor: button_cursor 指定鼠标悬停在Flash按钮上时的光标样式,可用值为SWFUpload.CURSOR里定义的常量。如:button_cursor: SWFUpload.CURSOR.HAND,
button_action(设置只能上传一个文档的限制:--》button_action: SWFUpload.BUTTON_ACTION.SELECT_FILE)
之后就是设置一些事件处理函数 这些都是在 handlers.js 里面相应的函数
file_dialog_start_handler: fileDialogStart,(设置文件对话开始函数)
file_queued_handler: fileQueued,(设置文件队列函数)
file_dialog_complete_handler: fileDialogComplete,(设置文件对话完成处理函数)
file_queue_error_handler: fileQueueError,(设置队列错误处理函数)
upload_start_handler: uploadStart,(设置开始上传函数)
upload_progress_handler: uploadProgress,(设置上传进度处理函数)
upload_error_handler: uploadError,(设置上传错误处理函数)
upload_complete_handler: uploadComplete,(设置上传此谨稿完成处理函数)
upload_success_handler: uploadSuccess(设置上传成功处理函数)
以上的配置都是在页面自动加载函数的setting大对象里面需要配置的基本参数
除了以上这些还有下面相应的非常关键的配置
别忘记:在setting大对象结束之后 在自动加载函数结束之前还有swfu = new SWFUpload(settings); 实例化一个对象
var setting还有森孝比较重要的配置 如下:
1.关于上传进度的配置是关键:
在var setting={}这个大对象里面设置一个元素:
custom_settings: {
progressTarget: "fsUploadProgress"
},
progressTarget的值(即fsUploadProgress)是文件上传进度的显示 将html里面设置相应的位置放id="fsUploadProgress"
如:<div class="progressbar progressbar-0" id="fsUploadProgress">
<span class="prog-num">0</span>
</div>
span标签里的0就是从0开始进行上传 0就是初始的显示进度
2:关于上传的按钮设置
在 var setting={} 这个大对象里面设置 button_placeholder_id : "spanButtonPlaceHolder"
需要将html相应的上传按钮加上相应的id="spanButtonPlaceHolder"
如:<div id="upload_doc" class="up-btn"><i >上传文档</i><span id="spanButtonPlaceHolder"></span></div>
成功上传需要将相应的数据进行处理:
在html页面中需要写ajax进行数据的处理~
如:
//成功后调用
function agree_upload(){
var doc_id=$('.doc_title').attr('id');
if(doc_id>0){
uploadFinish(doc_id);
parent.DOC88Window.close();
}else{
alert('您还未选择重新上传的文档');
}
}
function uploadFinish(new_p_id) {
var old_p_id = "<tpl>$p_id</tpl>";
$.ajax({
url: "/ucr/doc.php?act=save_upload",
type: "post",
data: {
old_p_id: old_p_id,
new_p_id: new_p_id
},
dataType: "json",
success: function (msg) {
if (msg.result == 1) {
alert("数据正确");
} else {
alert("数据错误");
}
}
});
}
第二:因为html页面中setting配置中有相应的函数处理配置 涉及到handler.js函数,所以接下来到handler.js文件的处理配置
根据html页面的配置 处理函数的顺序进行相应的配置
首先是fileQueue函数 文件排队函数:
需要设置一个变量 关于flash动画的函数
var stats = swfu.getStats();
根据需要将文件上传队列数量进行限制
if (stats.files_queued > 1) {
alert("您的附件不能超过1个");
return false;
}
接下来是fileQueueError函数 文件排队错误函数:
根据需要将相应的设置放在这个函数里面
可以放在try catch函数里面 设置的限制如下:
switch (errorCode) {
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
alert('单个文件大小不要超过50MB');
break;
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
alert('不能上传空文件');
this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
alert('文件类型错误');
break;
default:
if (file !== null) {
}
this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
break;
}
接下来是uploadStart函数 文件上传开始函数:
设置相应的功能按钮的变换 比如上传开始(走到这个函数时 可以将相应的上传按钮改成上传中 并且禁止点击 就是禁用功能 加上一个取消上传按钮 )
可以将上传的文件的名称和文件格式显示出来
如:
$("#upload_doc i").html("上传中");
$('#cancel_upload').html('取消');
$("#upload_doc").attr('disabled','disabled');
var name = file.name;
$('.doc_title').html(name);
var format = file.type;
format = format.toLocaleUpperCase();
format = format.replace('.', '');
$('.doc_format').html(format);
接下来是uploadProgress函数 文件上传进度函数:如:
var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);//上传的进度
var progress = new FileProgress(file, this.customSettings.progressTarget);
progress.setProgress(percent);
progress.setStatus("正在上传");
接下来是uploadSuccess函数 文件上传成功函数
然后是uploadError函数 上传失败函数:
其他相关的函数可以根据需要进行设置
第三:fileprogress.js文件 关于文件上传进度 关键的是:
FileProgress函数的设置:
如:
function FileProgress(file, targetID) {
this.fileProgressID = file.id;
this.fileProgressWrapper = document.getElementById(this.fileProgressID);
if (!this.fileProgressWrapper) {
this.fileProgressWrapper = document.createElement("li");
this.fileProgressWrapper.id = this.fileProgressID;
document.getElementById(targetID).appendChild(this.fileProgressWrapper);
}
this.setTimer(null);
}
FileProgress.prototype.setProgress = function (percentage) {} 里面进度样式的处理
如:
if (percentage <= 5) {
$(".progressbar").addClass('progressbar-5');
} else if (percentage <= 10) {
$(".progressbar").addClass('progressbar-10');
}......
第四:swfupload.js文件 几乎不用修改 可以将不用的函数删减
有很详细的讲解 链接:https://www.cnblogs.com/myboke/p/5579236.html
http://www.runoob.com/w3cnote/swfupload-guide.html
⑸ swfupload上传文件Upload Error: 404,但是已经上传成功
自己用flex写一个吧 java端引用commons-fileupload jar包,flex端使用flash.net.FileReference.upload
⑹ swfupload 上传以后 文件到哪去了
swf有一个定义好的回调函数方法:
upload_success_handler:uploadSuccess,
//自己定义一个名字为uploadSuccess的函数即可被调用
//例如
functionuploadSuccess(file,serverData){
varprogress=newFileProgress(file,this.customSettings.progressTarget);
progress.setComplete();
progress.setStatus(serverData+"图片已上传完成.");
progress.toggleCancel(false);
//serverData即是回传回来的图片名称
}