搜索
您的当前位置:首页ajaxFileUpload.js插件支持多文件上传的方法_javascript技巧

ajaxFileUpload.js插件支持多文件上传的方法_javascript技巧

时间:2023-12-04 来源:明星茬娱乐

前提条件:

ajaxFileUpload.js插件多文件上传

步骤:

1、修改源码,(源码只支持单个文件的上传): 代码如下://修改前代码------- //var oldElement = jQuery('#' + fileElementId); //var newElement = jQuery(oldElement).clone(); //jQuery(oldElement).attr('id', fileId); //jQuery(oldElement).before(newElement); //jQuery(oldElement).appendTo(form); //修改前代码------- //修改后代码------- for(var i in fileElementId){ var oldElement = jQuery('#' + fileElementId[i]); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form); } //修改后代码------- 2、使用方法: 代码如下:$.ajaxFileUpload({ url : "./upload/upload.action", secureuri : false, //fileElementId:'uploadfile1',//原使用方法 fileElementId : ['uploadfile1','uploadfile2','uploadfile3','uploadfile4','uploadfile5'],//现使用方法 dataType : 'json', success : function(data) { ajaxLoadEnd(); if (data.result == "success") { $.messager.alert('信息','导入成功。','info'); } else { $('#import_right').dialog('open'); $.messager.alert('信息','导入失败。错误信息:'+data.message,'error'); } }, error : function(data, status, e) { ajaxLoadEnd(); $.messager.alert('信息','导入失败。错误信息:网络异常或表单数据错误。','error'); } });

小编还为您整理了以下内容,可能对您也有帮助:

如何用Ajax实现多文件上传

jquery 实现多个上传文件教程:
首先创建解决方案,添加jquery的js和一些资源文件(如图片和进度条显示等):
1
2
3
4
5
jquery-1.3.2.min.js
jquery.uploadify.v2.1.0.js
jquery.uploadify.v2.1.0.min.js
swfobject.js
uploadify.css
1、页面的基本代码如下
这里用的是aspx页面(html也是也可的)
页面中引入的js和js函数如下:
1
2
3
4
5
6
7
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery.uploadify.v2.1.0.js" type="text/javascript"></script>
<script src="js/jquery.uploadify.v2.1.0.min.js" type="text/javascript"></script>
<script src="js/swfobject.js" type="text/javascript"></script>
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />

</script>
js函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script type="text/javascript">
$(document).ready(function () {

$("#uploadify").uploadify({
'uploader': 'image/uploadify.swf', //uploadify.swf文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框
'script': 'Handler1.ashx',// script : 后台处理程序的相对路径
'cancelImg': 'image/cancel.png',
'buttenText': '请选择文件',//浏览按钮的文本,默认值:BROWSE。
'sizeLimit':999999999,//文件大小显示
'floder': 'Uploader',//上传文件存放的目录
'queueID': 'fileQueue',//文件队列的ID,该ID与存放文件队列的div的ID一致
'queueSizeLimit': 120,//上传文件个数*
'progressData': 'speed',//上传速度显示
'auto': false,//是否自动上传
'multi': true,//是否多文件上传
//'onSelect': function (e, queueId, fileObj) {
// alert("唯一标识:" + queueId + "\r\n" +
// "文件名:" + fileObj.name + "\r\n" +
// "文件大小:" + fileObj.size + "\r\n" +
// "创建时间:" + fileObj.creationDate + "\r\n" +
// "最后修改时间:" + fileObj.modificationDate + "\r\n" +
// "文件类型:" + fileObj.type);

// }
'onQueueComplete': function (queueData) {
alert("文件上传成功!");
return;
}

});
});
页面中的控件代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<form id="form1" runat="server">
<div id="fileQueue">
</div>
<div>
<p>
<input type="file" name="uploadify" id="uploadify"/>
<input id="Button1" type="button" value="上传" onclick="javascript: $('#uploadify').uploadifyUpload()" />
<input id="Button2" type="button" value="取消" onclick="javascript:$('#uploadify').uploadifyClearQueue()" />
</p>
</div>
</form>
</body>
函数主要参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(document).ready(function() {
$('#fileInput1').fileUpload({
'uploader': 'uploader.swf',//不多讲了
'script': '/AjaxByJQuery/file.do',//处理Action
'cancelImg': 'cancel.png',
'folder': '',//服务端默认保存路径
'scriptData':{'methed':'uploadFile','arg1','value1'},
//向后台传递参数,methed,arg1为参数名,uploadFile,value1为对应的参数值,服务端通过request["arg1"]
'buttonText':'UpLoadFile',//按钮显示文字,不支持中文,解决方案见下
//'buttonImg':'图片路径',//通过设置背景图片解决中文问题,就是把背景图做成按钮的样子
'multi':'true',//多文件上传开关
'fileExt':'*.xls;*.csv',//文件过滤器
'fileDesc':'.xls',//文件过滤器 详解见文档
'onComplete' : function(event,queueID,file,serverData,data){
//serverData为服务器端返回的字符串值
alert(serverData);
}
});
});
后台一般处理文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Net;
using System.Web;
using System.Web.Services;
namespace fupload
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";

HttpPostedFile file = context.Request.Files["Filedata"];//对客户端文件的访问

string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"])+"\\";//服务器端文件保存路径

if (file != null)
{
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);//创建服务端文件夹
}

file.SaveAs(uploadPath + file.FileName);//保存文件
context.Response.Write("上传成功");
}

else
{
context.Response.Write("0");
}

}

public bool IsReusable
{
get
{
return false;
}
}
}
}
以上方式基本可以实现多文件的上传,大文件大小是在控制在10M以下/。

如何用Ajax实现多文件上传

jquery 实现多个上传文件教程:
首先创建解决方案,添加jquery的js和一些资源文件(如图片和进度条显示等):
1
2
3
4
5
jquery-1.3.2.min.js
jquery.uploadify.v2.1.0.js
jquery.uploadify.v2.1.0.min.js
swfobject.js
uploadify.css
1、页面的基本代码如下
这里用的是aspx页面(html也是也可的)
页面中引入的js和js函数如下:
1
2
3
4
5
6
7
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery.uploadify.v2.1.0.js" type="text/javascript"></script>
<script src="js/jquery.uploadify.v2.1.0.min.js" type="text/javascript"></script>
<script src="js/swfobject.js" type="text/javascript"></script>
<link href="css/uploadify.css" rel="stylesheet" type="text/css" />

</script>
js函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script type="text/javascript">
$(document).ready(function () {

$("#uploadify").uploadify({
'uploader': 'image/uploadify.swf', //uploadify.swf文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框
'script': 'Handler1.ashx',// script : 后台处理程序的相对路径
'cancelImg': 'image/cancel.png',
'buttenText': '请选择文件',//浏览按钮的文本,默认值:BROWSE。
'sizeLimit':999999999,//文件大小显示
'floder': 'Uploader',//上传文件存放的目录
'queueID': 'fileQueue',//文件队列的ID,该ID与存放文件队列的div的ID一致
'queueSizeLimit': 120,//上传文件个数*
'progressData': 'speed',//上传速度显示
'auto': false,//是否自动上传
'multi': true,//是否多文件上传
//'onSelect': function (e, queueId, fileObj) {
// alert("唯一标识:" + queueId + "\r\n" +
// "文件名:" + fileObj.name + "\r\n" +
// "文件大小:" + fileObj.size + "\r\n" +
// "创建时间:" + fileObj.creationDate + "\r\n" +
// "最后修改时间:" + fileObj.modificationDate + "\r\n" +
// "文件类型:" + fileObj.type);

// }
'onQueueComplete': function (queueData) {
alert("文件上传成功!");
return;
}

});
});
页面中的控件代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
<body>
<form id="form1" runat="server">
<div id="fileQueue">
</div>
<div>
<p>
<input type="file" name="uploadify" id="uploadify"/>
<input id="Button1" type="button" value="上传" onclick="javascript: $('#uploadify').uploadifyUpload()" />
<input id="Button2" type="button" value="取消" onclick="javascript:$('#uploadify').uploadifyClearQueue()" />
</p>
</div>
</form>
</body>
函数主要参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(document).ready(function() {
$('#fileInput1').fileUpload({
'uploader': 'uploader.swf',//不多讲了
'script': '/AjaxByJQuery/file.do',//处理Action
'cancelImg': 'cancel.png',
'folder': '',//服务端默认保存路径
'scriptData':{'methed':'uploadFile','arg1','value1'},
//向后台传递参数,methed,arg1为参数名,uploadFile,value1为对应的参数值,服务端通过request["arg1"]
'buttonText':'UpLoadFile',//按钮显示文字,不支持中文,解决方案见下
//'buttonImg':'图片路径',//通过设置背景图片解决中文问题,就是把背景图做成按钮的样子
'multi':'true',//多文件上传开关
'fileExt':'*.xls;*.csv',//文件过滤器
'fileDesc':'.xls',//文件过滤器 详解见文档
'onComplete' : function(event,queueID,file,serverData,data){
//serverData为服务器端返回的字符串值
alert(serverData);
}
});
});
后台一般处理文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Net;
using System.Web;
using System.Web.Services;
namespace fupload
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";

HttpPostedFile file = context.Request.Files["Filedata"];//对客户端文件的访问

string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"])+"\\";//服务器端文件保存路径

if (file != null)
{
if (!Directory.Exists(uploadPath))
{
Directory.CreateDirectory(uploadPath);//创建服务端文件夹
}

file.SaveAs(uploadPath + file.FileName);//保存文件
context.Response.Write("上传成功");
}

else
{
context.Response.Write("0");
}

}

public bool IsReusable
{
get
{
return false;
}
}
}
}
以上方式基本可以实现多文件的上传,大文件大小是在控制在10M以下/。

如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数

1、如何让ajaxfileupload.js支持IE9、IE10?

打开ajaxfileupload 文件,找到下面的代码。

[javascript] view plaincopy

if(window.ActiveXObject) {

var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');

if(typeof uri== 'boolean'){

io.src = 'javascript:false';

}

else if(typeof uri== 'string'){

io.src = uri;

}

}

修改成如下:

[javascript] view plaincopy

if(window.ActiveXObject) {

if(jQuery.browser.version=="9.0" || jQuery.browser.version=="10.0"){

var io = document.createElement('iframe');

io.id = frameId;

io.name = frameId;

}else if(jQuery.browser.version=="6.0" || jQuery.browser.version=="7.0" || jQuery.browser.version=="8.0"){

var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');

if(typeof uri== 'boolean'){

io.src = 'javascript:false';

}

else if(typeof uri== 'string'){

io.src = uri;

}

}

}

2、如何让ajaxfileupload.js可以在文件上传的同时传递多个台数。

找到以下代码:

[javascript] view plaincopy

ajaxFileUpload: function(s) {

// TODO introce global settings, allowing the client to modify them for all requests, not only timeout

s = jQuery.extend({}, jQuery.ajaxSettings, s);

var id = new Date().getTime()

var form = jQuery.createUploadForm(id, s.fileElementId);

增加自己要传递的参数:

[javascript] view plaincopy

ajaxFileUpload: function(s) {

// TODO introce global settings, allowing the client to modify them for all requests, not only timeout

s = jQuery.extend({}, jQuery.ajaxSettings, s);

var id = new Date().getTime()

var form = jQuery.cre

js、ajax怎样上传

ajaxfileupload.js插件的使用很简单。
前台HTML代码类似:
<script type="text/javascript">$(#buttonUplod).click(function () { $.ajaxFileUpload ({ url:'doajaxfileupload.php', //你处理上传文件的服务端 secureuri:false, //与页面处理代码中file相对应的ID值 fileElementId:'img', dataType: 'json', //返回数据类型:text,xml,json,html,scritp,jsonp五种 success: function (data) { alert(data.file_infor); } })});</script><input id="img" type="file" size="45" name="img" ><button id="buttonUpload" onclick="return ajaxFileUpload();">Upload</button>

后台doajaxfileupload.php脚本:
<?php $upFilePath = "../attachment/";$ok=@move_uploaded_file($_FILES['img']['tmp_name'],$upFilePath); if($ok === FALSE){ echo json_encode('file_infor'=>'上传失败'); }else{ echo json_encode('file_infor'=>'上传成功'); }?>

为了测试,可以使用类似下面的方式保存传递过来的变量值:
$file_info = var_export($_FILES,true);
$ok = file_put_contents("../attachment/file_info.txt",$file_info);
if ($ok) exit(json_encode('file_infor'=>'上传成功'));
exit (json_encode('file_infor'=>'上传失败'));

※ 注意
请留意HTML代码文件框中的标记:
1. id='img'是用于给ajaxfileupload.js插件的fileElementId:'img'识别的,jQuery选择器会利用该字符串获得文本框的值;
2. name='img'是用于通过post方式提交到后台脚本时,PHP通过$_FILES['img']读取上传文件的数据,若没有该值,$_FILES变量为空;

js、ajax怎样上传

ajaxfileupload.js插件的使用很简单。
前台HTML代码类似:
<script type="text/javascript">$(#buttonUplod).click(function () { $.ajaxFileUpload ({ url:'doajaxfileupload.php', //你处理上传文件的服务端 secureuri:false, //与页面处理代码中file相对应的ID值 fileElementId:'img', dataType: 'json', //返回数据类型:text,xml,json,html,scritp,jsonp五种 success: function (data) { alert(data.file_infor); } })});</script><input id="img" type="file" size="45" name="img" ><button id="buttonUpload" onclick="return ajaxFileUpload();">Upload</button>

后台doajaxfileupload.php脚本:
<?php $upFilePath = "../attachment/";$ok=@move_uploaded_file($_FILES['img']['tmp_name'],$upFilePath); if($ok === FALSE){ echo json_encode('file_infor'=>'上传失败'); }else{ echo json_encode('file_infor'=>'上传成功'); }?>

为了测试,可以使用类似下面的方式保存传递过来的变量值:
$file_info = var_export($_FILES,true);
$ok = file_put_contents("../attachment/file_info.txt",$file_info);
if ($ok) exit(json_encode('file_infor'=>'上传成功'));
exit (json_encode('file_infor'=>'上传失败'));

※ 注意
请留意HTML代码文件框中的标记:
1. id='img'是用于给ajaxfileupload.js插件的fileElementId:'img'识别的,jQuery选择器会利用该字符串获得文本框的值;
2. name='img'是用于通过post方式提交到后台脚本时,PHP通过$_FILES['img']读取上传文件的数据,若没有该值,$_FILES变量为空;

jsp中使用jquery的ajaxfileupload插件怎么实现异步上传

<script type=text/javascript src=js/jquery.js</script

<script type=text/javascript src=js/ajaxfileupload.js</script

<!-- 执行上传文件操作的函数 --

<script type=text/javascript

function ajaxFileUpload(){

$.ajaxFileUpload({url:'update.do?method=uploader', //需要链接到服务器地址

secureuri:false,

fileElementId:'houseMaps', //文件选择框的id属性

dataType: 'xml', //服务器返回的格式,可以是json

success: function (data, status) //相当于java中try语句块的用法{$('#result').html('添加成功');},

error: function (data, status, e) //相当于java中catch语句块的用法{$('#result').html('添加失败');}});}</script</head<body<form method=post action=update.do?method=uploader enctype=multipart/form-data

<input type=file id=houseMaps name=houseMaps/

<input type=button value=提交 onclick=ajaxFileUpload()/</form<div id=result</div</body</html服务器代码:

public class UpdateAction extends DispatchAction {

public ActionForward uploader(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

UpFormForm upFormForm = (UpFormForm) form;

FormFile ff = upFormForm.getHouseMaps();try {InputStream is = ff.getInputStream();

File file = new File(D:/ + ff.getFileName()); //指定文件存储的路径和文件名

OutputStream os = new FileOutputStream(file);

byte[] b = new byte[1024];

int len = 0;

while((len = is.read(b)) != -1){

os.write(b, 0, len);}os.close();

is.close();

} catch (Exception e)

{

ajax如何 实现 文件上传



程序说明

使用说明

实例化时,第一个必要参数是file控件对象:

new QuickUpload(file);


第二个可选参数用来设置系统的默认属性,包括
属性:    默认值//说明
parameter: {},//参数对象
action:  "",//设置action
timeout: 0,//设置超时(秒为单位)
onReady: function(){},//上传准备时执行
onFinish: function(){},//上传完成时执行
onStop:  function(){},//上传停止时执行
onTimeout: function(){}//上传超时时执行

还提供了以下方法:
upload:执行上传操作;
stop:停止上传操作;
dispose:销毁程序。

var QuickUpload = function(file, options) {

this.file = $$(file);

this._sending = false;//是否正在上传
this._timer = null;//定时器
this._iframe = null;//iframe对象
this._form = null;//form对象
this._inputs = {};//input对象
this._fFINISH = null;//完成执行函数

$$.extend(this, this._setOptions(options));
};
QuickUpload._counter = 1;
QuickUpload.prototype = {
//设置默认属性
_setOptions: function(options) {
this.options = {//默认值
action:        "",//设置action
timeout:    0,//设置超时(秒为单位)
parameter:    {},//参数对象
onReady:    function(){},//上传准备时执行
onFinish:    function(){},//上传完成时执行
onStop:        function(){},//上传停止时执行
onTimeout:    function(){}//上传超时时执行
};
return $$.extend(this.options, options || {});
},
//上传文件
upload: function() {
//停止上一次上传
this.stop();
//没有文件返回
if ( !this.file || !this.file.value ) return;
//可能在onReady中修改相关属性所以放前面
this.onReady();
//设置iframe,form和表单控件
this._setIframe();
this._setForm();
this._setInput();
//设置超时
if ( this.timeout > 0 ) {
this._timer = setTimeout( $$F.bind(this._timeout, this), this.timeout * 1000 );
}
//开始上传
this._form.submit();
this._sending = true;
},
//设置iframe
_setIframe: function() {
if ( !this._iframe ) {
//创建iframe
var iframename = "QUICKUPLOAD_" + QuickUpload._counter++,
iframe = document.createElement( $$B.ie ? "<iframe name="" + iframename + "">" : "iframe");
iframe.name = iframename;
iframe.style.display = "none";
//记录完成程序方便移除
var finish = this._fFINISH = $$F.bind(this._finish, this);
//iframe加载完后执行完成程序
if ( $$B.ie ) {
iframe.attachEvent( "onload", finish );
} else {
iframe.onload = $$B.opera ? function(){ this.onload = finish; } : finish;
}
//插入body
var body = document.body; body.insertBefore( iframe, body.childNodes[0] );

this._iframe = iframe;
}
},
//设置form
_setForm: function() {
if ( !this._form ) {
var form = document.createElement('form'), file = this.file;
//设置属性
$$.extend(form, {
target: this._iframe.name, method: "post", encoding: "multipart/form-data"
});
//设置样式
$$D.setStyle(form, {
padding: 0, margin: 0, border: 0,
backgroundColor: "transparent", display: "inline"
});
//提交前去掉form
file.form && $$E.addEvent(file.form, "submit", $$F.bind(this.dispose, this));
//插入form
file.parentNode.insertBefore(form, file).appendChild(file);

this._form = form;
}
//action可能会修改
this._form.action = this.action;
},
//设置input
_setInput: function() {
var form = this._form, oldInputs = this._inputs, newInputs = {}, name;
//设置input
for ( name in this.parameter ) {
var input = form[name];
if ( !input ) {
//如果没有对应input新建一个
input = document.createElement("input");
input.name = name; input.type = "hidden";
form.appendChild(input);
}
input.value = this.parameter[name];
//记录当前input
newInputs[name] = input;
//删除已有记录
delete oldInputs[name];
}
//移除无用input
for ( name in oldInputs ) { form.removeChild( oldInputs[name] ); }
//保存当前input
this._inputs = newInputs;
},
//停止上传
stop: function() {
if ( this._sending ) {
this._sending = false;
clearTimeout(this._timer);
//重置iframe
if ( $$B.opera ) {//opera通过设置src会有问题
this._removeIframe();
} else {
this._iframe.src = "";
}
this.onStop();
}
},
//销毁程序
dispose: function() {
this._sending = false;
clearTimeout(this._timer);
//清除iframe
if ( $$B.firefox ) {
setTimeout($$F.bind(this._removeIframe, this), 0);
} else {
this._removeIframe();
}
//清除form
this._removeForm();
//清除dom关联
this._inputs = this._fFINISH = this.file = null;
},
//清除iframe
_removeIframe: function() {
if ( this._iframe ) {
var iframe = this._iframe;
$$B.ie ? iframe.detachEvent( "onload", this._fFINISH ) : ( iframe.onload = null );
document.body.removeChild(iframe); this._iframe = null;
}
},
//清除form
_removeForm: function() {
if ( this._form ) {
var form = this._form, parent = form.parentNode;
if ( parent ) {
parent.insertBefore(this.file, form); parent.removeChild(form);
}
this._form = this._inputs = null;
}
},
//超时函数
_timeout: function() {
if ( this._sending ) { this._sending = false; this.stop(); this.onTimeout(); }
},
//完成函数
_finish: function() {
if ( this._sending ) { this._sending = false; this.onFinish(this._iframe); }
}
}

ajax如何 实现 文件上传



程序说明

使用说明

实例化时,第一个必要参数是file控件对象:

new QuickUpload(file);


第二个可选参数用来设置系统的默认属性,包括
属性:    默认值//说明
parameter: {},//参数对象
action:  "",//设置action
timeout: 0,//设置超时(秒为单位)
onReady: function(){},//上传准备时执行
onFinish: function(){},//上传完成时执行
onStop:  function(){},//上传停止时执行
onTimeout: function(){}//上传超时时执行

还提供了以下方法:
upload:执行上传操作;
stop:停止上传操作;
dispose:销毁程序。

var QuickUpload = function(file, options) {

this.file = $$(file);

this._sending = false;//是否正在上传
this._timer = null;//定时器
this._iframe = null;//iframe对象
this._form = null;//form对象
this._inputs = {};//input对象
this._fFINISH = null;//完成执行函数

$$.extend(this, this._setOptions(options));
};
QuickUpload._counter = 1;
QuickUpload.prototype = {
//设置默认属性
_setOptions: function(options) {
this.options = {//默认值
action:        "",//设置action
timeout:    0,//设置超时(秒为单位)
parameter:    {},//参数对象
onReady:    function(){},//上传准备时执行
onFinish:    function(){},//上传完成时执行
onStop:        function(){},//上传停止时执行
onTimeout:    function(){}//上传超时时执行
};
return $$.extend(this.options, options || {});
},
//上传文件
upload: function() {
//停止上一次上传
this.stop();
//没有文件返回
if ( !this.file || !this.file.value ) return;
//可能在onReady中修改相关属性所以放前面
this.onReady();
//设置iframe,form和表单控件
this._setIframe();
this._setForm();
this._setInput();
//设置超时
if ( this.timeout > 0 ) {
this._timer = setTimeout( $$F.bind(this._timeout, this), this.timeout * 1000 );
}
//开始上传
this._form.submit();
this._sending = true;
},
//设置iframe
_setIframe: function() {
if ( !this._iframe ) {
//创建iframe
var iframename = "QUICKUPLOAD_" + QuickUpload._counter++,
iframe = document.createElement( $$B.ie ? "<iframe name="" + iframename + "">" : "iframe");
iframe.name = iframename;
iframe.style.display = "none";
//记录完成程序方便移除
var finish = this._fFINISH = $$F.bind(this._finish, this);
//iframe加载完后执行完成程序
if ( $$B.ie ) {
iframe.attachEvent( "onload", finish );
} else {
iframe.onload = $$B.opera ? function(){ this.onload = finish; } : finish;
}
//插入body
var body = document.body; body.insertBefore( iframe, body.childNodes[0] );

this._iframe = iframe;
}
},
//设置form
_setForm: function() {
if ( !this._form ) {
var form = document.createElement('form'), file = this.file;
//设置属性
$$.extend(form, {
target: this._iframe.name, method: "post", encoding: "multipart/form-data"
});
//设置样式
$$D.setStyle(form, {
padding: 0, margin: 0, border: 0,
backgroundColor: "transparent", display: "inline"
});
//提交前去掉form
file.form && $$E.addEvent(file.form, "submit", $$F.bind(this.dispose, this));
//插入form
file.parentNode.insertBefore(form, file).appendChild(file);

this._form = form;
}
//action可能会修改
this._form.action = this.action;
},
//设置input
_setInput: function() {
var form = this._form, oldInputs = this._inputs, newInputs = {}, name;
//设置input
for ( name in this.parameter ) {
var input = form[name];
if ( !input ) {
//如果没有对应input新建一个
input = document.createElement("input");
input.name = name; input.type = "hidden";
form.appendChild(input);
}
input.value = this.parameter[name];
//记录当前input
newInputs[name] = input;
//删除已有记录
delete oldInputs[name];
}
//移除无用input
for ( name in oldInputs ) { form.removeChild( oldInputs[name] ); }
//保存当前input
this._inputs = newInputs;
},
//停止上传
stop: function() {
if ( this._sending ) {
this._sending = false;
clearTimeout(this._timer);
//重置iframe
if ( $$B.opera ) {//opera通过设置src会有问题
this._removeIframe();
} else {
this._iframe.src = "";
}
this.onStop();
}
},
//销毁程序
dispose: function() {
this._sending = false;
clearTimeout(this._timer);
//清除iframe
if ( $$B.firefox ) {
setTimeout($$F.bind(this._removeIframe, this), 0);
} else {
this._removeIframe();
}
//清除form
this._removeForm();
//清除dom关联
this._inputs = this._fFINISH = this.file = null;
},
//清除iframe
_removeIframe: function() {
if ( this._iframe ) {
var iframe = this._iframe;
$$B.ie ? iframe.detachEvent( "onload", this._fFINISH ) : ( iframe.onload = null );
document.body.removeChild(iframe); this._iframe = null;
}
},
//清除form
_removeForm: function() {
if ( this._form ) {
var form = this._form, parent = form.parentNode;
if ( parent ) {
parent.insertBefore(this.file, form); parent.removeChild(form);
}
this._form = this._inputs = null;
}
},
//超时函数
_timeout: function() {
if ( this._sending ) { this._sending = false; this.stop(); this.onTimeout(); }
},
//完成函数
_finish: function() {
if ( this._sending ) { this._sending = false; this.onFinish(this._iframe); }
}
}

jquery 用a标签控制文件上传

<html xmlns="http://www.w3.org/1999/xhtml">  

  

<head>  

<title>ajaxFileUpload文件上传例子</title>  

<script type="text/javascript" src="<%=baseURL%>/kinth/js/ajaxfileupload.js"></script>  

<script type="text/javascript">  

   var flag=0;      //flag作用:分两种情况提交信息,如果是修改操作,没有修改上传文件,只修改其他字段的信息时点保存也能提交信息  

    function uploadFile(){  

        $.ajaxFileUpload({  

                url:baseURL+ "/fileCatalog.do?method=save",            //需要链接到服务器地址  

                secureuri:true,  

                fileElementId:'file',                        //文件选择框的id属性  

                success: function(data, status){     

                    var results = $(data).find('body').html();  

                    var obj = eval("("+results+")");  

                    $("#fileSize").val(obj.fileSize);  

                    $("#fileUrl").val(obj.fileUrl);  

                    $('#fileCatalogForm').submit();  

                },error: function (data, status, e){  

                        showDialogWithMsg('ideaMsg','提示','文件错误!');  

                }  

            });  

    }  

          

    function getFileName(obj)  

    {  

        flag=1;  

            var pos = -1;  

            if(obj.value.indexOf("/") > -1){  

                pos = obj.value.lastIndexOf("/")*1;  

        }else if(obj.value.indexOf("") > -1){  

                pos = obj.value.lastIndexOf("")*1;  

        }  

        var fileName =  obj.value.substring(pos+1);  

        $("#fileName").val(fileName);  

      $('.files').text(fileName);  

    }  

  

        function ev_save(){  

            if(submitMyForm('fileCatalogForm')){  

             if(flag==0){  

                $('#fileCatalogForm').submit();  

             }else{  

                uploadFile();  

             }   

           }             

         }  

  

         function ev_back(){  

        window.location.href=baseURL+'/fileCatalog.do?method=list';  

    }  

</script>  

</head>  

<body>  

    <html:form styleId="fileCatalogForm" action="/fileCatalog.do?method=save&fileFlag=true" method="post" enctype="application/x-www-form-urlencoded" style="text-align:left;">  

    <table>  

        <tr>  

            <td>附件上传:</td>  

            <td style="text-align:left;"  id="fileTd">  

                <input type="file" name="file" id="file" onChange="getFileName(this);"  /><br />                  

            </td>  

            <td colspan="2" class="tdr">  

                <ol  class=files>  

                    <c:if test="${entity.resourceId != null && entity.resourceId != ''}"><li> ${entity.fileName}&nbsp;&nbsp;上传成功</li></c:if>  

                </ol>  

            </td>  

        </tr>   

        <c:if test="${entity.resourceId == null || entity.resourceId == ''}">  

            <input type="text" name="fileSize" id="fileSize" >  

        </c:if>     

        <input type="hidden" id="fileUrl" name="fileUrl" value="${entity.fileUrl}"   

    </table>  

    </html:form>  

</body>

jQuery fileupload 多文件上传

//js
$(function () {
//文件上传地址
//var url = 'http://localhost/index.php/upload/do_upload';
var url = 'http://localhost/index.php/uploadwe';
//初始化,主要是设置上传参数,以及事件处理方法(回调函数)
$('#fileupload').fileupload({
autoUpload: true,//是否自动上传
//url: url,//上传地址
dataType: 'json',
done: function (e, data) {//设置文件上传完毕事件的回调函数
//$.each(data.result.files, function (index, file) {
$("#myimg").attr({src:data.result.imgurl});
$("#myimg").css({width:"290px",height:"218px"});
//alert(data.result);
},
progressall: function (e, data) {//设置上传进度事件的回调函数
var progress = parseInt(data.loaded / data.total * 5, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}
});
}); 
//上传至服务后,服务器返回json数据--上传图片的地址。
//html
<label for="text">上传图片</label>
<input id="fileupload" type="file" name="files" data-url="<span style="color:#ff6666;">jquery_save_img</span>" multiple>
//data-url为上传至服务器端的处理接口/地址,可替换js中的url
//服务器端
function jquery_save_img()  
    {  
        $arrType=array('image/jpg','image/gif','image/png','image/bmp','image/pjpeg','image/jpeg');  
        $max_size='500000000000';      // 最大文件*(单位:byte)  
        $upfile='./uploads'; //图片目录路径  
        $file=$_FILES['files'];  
  
        /* 
        echo 'filename:'.$file['tmp_name'].';<br />'; 
        echo 'size:'.$file['size'].';<br />'; 
        echo 'type:'.$file['type'].';<br />'; 
        echo 'name:'.$file['name'].';<br />'; 
        */  
          
        if($_SERVER['REQUEST_METHOD']=='POST'){ //判断提交方式是否为POST  
            if(!is_uploaded_file($file['tmp_name'])){ //判断上传文件是否存在  
                echo "<font color='#FF0000'>文件不存在!</font>";  
                exit;  
            }  
  
            if($file['size']>$max_size){  //判断文件大小是否大于500000字节  
                echo "<font color='#FF0000'>上传文件太大!</font>";  
                exit;  
            }   
            if(!in_array($file['type'],$arrType)){  //判断图片文件的格式  
                echo "<font color='#FF0000'>上传文件格式不对!</font>xxx:".$file['type'];  
                exit;  
            }  
            if(!file_exists($upfile)){  // 判断存放文件目录是否存在  
                mkdir($upfile,0777,true);  
            }   
            $imageSize=getimagesize($file['tmp_name']);  
            $img=$imageSize[0].'*'.$imageSize[1];  
            $fname=$file['name'];  
            $ftype=explode('.',$fname);  
            $picName=$upfile."/cloudy".$fname;  
  
            if(file_exists($picName)){  
                //echo "<font color='#FF0000'>同文件名已存在!</font>";  
                //exit;  
            }  
            if(!move_uploaded_file($file['tmp_name'],$picName)){    
                echo "<font color='#FF0000'>移动文件出错!</font>";  
                exit;  
            }  
            else{  
            /* 
                echo "<font color='#FF0000'>图片文件上传成功!</font><br/>"; 
                echo "<font color='#0000FF'>图片大小:$img</font><br/>"; 
                echo "图片预览:<br><div style='border:#F00 1px solid; width:200px;height:200px'> 
                <img src="".$picName."" width=200px height=200px>".$fname."</div>"; 
            */  
                echo '{"imgurl":"http://localhost/uploads/cloudy'.$fname.'"}';  
            }  
        }  
      
    }

jQuery fileupload 多文件上传

//js
$(function () {
//文件上传地址
//var url = 'http://localhost/index.php/upload/do_upload';
var url = 'http://localhost/index.php/uploadwe';
//初始化,主要是设置上传参数,以及事件处理方法(回调函数)
$('#fileupload').fileupload({
autoUpload: true,//是否自动上传
//url: url,//上传地址
dataType: 'json',
done: function (e, data) {//设置文件上传完毕事件的回调函数
//$.each(data.result.files, function (index, file) {
$("#myimg").attr({src:data.result.imgurl});
$("#myimg").css({width:"290px",height:"218px"});
//alert(data.result);
},
progressall: function (e, data) {//设置上传进度事件的回调函数
var progress = parseInt(data.loaded / data.total * 5, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}
});
}); 
//上传至服务后,服务器返回json数据--上传图片的地址。
//html
<label for="text">上传图片</label>
<input id="fileupload" type="file" name="files" data-url="<span style="color:#ff6666;">jquery_save_img</span>" multiple>
//data-url为上传至服务器端的处理接口/地址,可替换js中的url
//服务器端
function jquery_save_img()  
    {  
        $arrType=array('image/jpg','image/gif','image/png','image/bmp','image/pjpeg','image/jpeg');  
        $max_size='500000000000';      // 最大文件*(单位:byte)  
        $upfile='./uploads'; //图片目录路径  
        $file=$_FILES['files'];  
  
        /* 
        echo 'filename:'.$file['tmp_name'].';<br />'; 
        echo 'size:'.$file['size'].';<br />'; 
        echo 'type:'.$file['type'].';<br />'; 
        echo 'name:'.$file['name'].';<br />'; 
        */  
          
        if($_SERVER['REQUEST_METHOD']=='POST'){ //判断提交方式是否为POST  
            if(!is_uploaded_file($file['tmp_name'])){ //判断上传文件是否存在  
                echo "<font color='#FF0000'>文件不存在!</font>";  
                exit;  
            }  
  
            if($file['size']>$max_size){  //判断文件大小是否大于500000字节  
                echo "<font color='#FF0000'>上传文件太大!</font>";  
                exit;  
            }   
            if(!in_array($file['type'],$arrType)){  //判断图片文件的格式  
                echo "<font color='#FF0000'>上传文件格式不对!</font>xxx:".$file['type'];  
                exit;  
            }  
            if(!file_exists($upfile)){  // 判断存放文件目录是否存在  
                mkdir($upfile,0777,true);  
            }   
            $imageSize=getimagesize($file['tmp_name']);  
            $img=$imageSize[0].'*'.$imageSize[1];  
            $fname=$file['name'];  
            $ftype=explode('.',$fname);  
            $picName=$upfile."/cloudy".$fname;  
  
            if(file_exists($picName)){  
                //echo "<font color='#FF0000'>同文件名已存在!</font>";  
                //exit;  
            }  
            if(!move_uploaded_file($file['tmp_name'],$picName)){    
                echo "<font color='#FF0000'>移动文件出错!</font>";  
                exit;  
            }  
            else{  
            /* 
                echo "<font color='#FF0000'>图片文件上传成功!</font><br/>"; 
                echo "<font color='#0000FF'>图片大小:$img</font><br/>"; 
                echo "图片预览:<br><div style='border:#F00 1px solid; width:200px;height:200px'> 
                <img src="".$picName."" width=200px height=200px>".$fname."</div>"; 
            */  
                echo '{"imgurl":"http://localhost/uploads/cloudy'.$fname.'"}';  
            }  
        }  
      
    }

ajaxupload.js无法获取上传文件

ajaxupload.js是一个开源的实现Ajax文件上传的jQuery插件,常用于向服务器上传文件。如果遇到该插件无法获取上传文件的问题,可能是以下几个方面的原因:

1、插件引用错误:首先需要确保插件已正确引用,可以检查HTML代码或控制台中是否出现引用错误或没有引用相关JS文件的情况。

2、表单设置错误:使用ajaxupload.js时,需要将表单对象传递给插件以表示文件上传的上下文。如果表单对象设置有误,插件可能无法获取上传文件。可以确保表单中存在file类型的input,并将其作为参数传递给插件。

3、上传文件格式不正确:如果上传文件的格式不受支持,则插件可能无法正确获取上传文件。可以确保上传的文件格式与插件支持的格式相同。

4、安全问题:有些情况下,安全设置可能会禁止通过JavaScript读取文件内容,防止网站被黑客攻击等。可以检查安全设置以确定是否存在。

5、程序服务端问题:如果前面几个问题都排除了,还是无法获取上传文件,则可能是由于程序服务端的设置或代码实现问题,需要进一步检查或调试。

jsp中使用jquery的ajaxfileupload插件怎么实现异步上传

ajaxfileupload实现异步上传的完整例子:

JSP页面中引入的script代码:

<script>

function ajaxFileUpload()

{

$("#loading").ajaxStart(function(){

$(this).show();

})//开始上传文件时显示一个图片

.ajaxComplete(function(){

$(this).hide();

});//文件上传完成将图片隐藏起来

$.ajaxFileUpload({

url:'AjaxImageUploadAction.action',//用于文件上传的服务器端请求地址

secureuri:false,//一般设置为false

fileElementId:'imgfile',//文件上传空间的id属性 <input type="file" id="imgfile" name="file" />

dataType: 'json',//返回值类型 一般设置为json

success: function (data, status) //服务器成功响应处理函数

{

alert(data.message);//从服务器返回的json中取出message中的数据,其中message为在struts2中定义的成员变量

if(typeof(data.error) != 'undefined')

{

if(data.error != '')

{

alert(data.error);

}else

{

alert(data.message);

}

}

},

error: function (data, status, e)//服务器响应失败处理函数

{

alert(e);

}

}

)

return false;

}

</script>

struts.xml配置文件中的配置方法:

<struts>

<package name="struts2" extends="json-default">

<action name="AjaxImageUploadAction" class="com.test.action.ImageUploadAction">

<result type="json" name="success">

<param name="contentType">text/html</param>

</result>

<result type="json" name="error">

<param name="contentType">text/html</param>

</result>

</action>

</package>

</struts>

上传处理的Action ImageUploadAction.action

package com.test.action;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.Arrays;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")

public class ImageUploadAction extends ActionSupport {

private File imgfile;

private String imgfileFileName;

private String imgfileFileContentType;

private String message = "你已成功上传文件";

public File getImgfile() {

return imgfile;

}

public void setImgfile(File imgfile) {

this.imgfile = imgfile;

}

public String getImgfileFileName() {

return imgfileFileName;

}

public void setImgfileFileName(String imgfileFileName) {

this.imgfileFileName = imgfileFileName;

}

public String getImgfileFileContentType() {

return imgfileFileContentType;

}

public void setImgfileFileContentType(String imgfileFileContentType) {

this.imgfileFileContentType = imgfileFileContentType;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

@SuppressWarnings("deprecation")

public String execute() throws Exception {

String path = ServletActionContext.getRequest().getRealPath("/upload/mri_img_upload");

String[] imgTypes = new String[] { "gif", "jpg", "jpeg", "png","bmp" };

try {

File f = this.getImgfile();

String fileExt = this.getImgfileFileName().substring(this.getImgfileFileName().lastIndexOf(".") + 1).toLowerCase();

/*

if(this.getImgfileFileName().endsWith(".exe")){

message="上传的文件格式不允许!!!";

return ERROR;

}*/

/**

* 检测上传文件的扩展名是否合法

* */

if (!Arrays.<String> asList(imgTypes).contains(fileExt)) {

message="只能上传 gif,jpg,jpeg,png,bmp等格式的文件!";

return ERROR;

}

FileInputStream inputStream = new FileInputStream(f);

FileOutputStream outputStream = new FileOutputStream(path + "/"+ this.getImgfileFileName());

byte[] buf = new byte[1024];

int length = 0;

while ((length = inputStream.read(buf)) != -1) {

outputStream.write(buf, 0, length);

}

inputStream.close();

outputStream.flush();

} catch (Exception e) {

e.printStackTrace();

message = "文件上传失败了!!!!";

}

return SUCCESS;

}

}

明星茬娱乐还为您提供以下相关内容希望对您有帮助:

如何用Ajax实现多文件上传

'multi': true,//是否多文件上传 //'onSelect': function (e, queueId, fileObj) { // alert("唯一标识:" + queueId + "\r\n" + // "文件名:" + fileObj.name + "\r\n" + // "文件大小:...

如何让ajaxfileupload.js支持IE9,IE10,并可以传递多个参数

oFrame.name = "iframName";1、如何让ajaxfileupload.js支持IE9、IE10?打开ajaxfileupload 文件,找到下面的代码。[javascript] view plain copy if(window.ActiveXObject) { var io = document.createElement('');if(...

DWZ中怎样整合JQuery的ajaxFileUpload上传插件

利用jQuery的选择器获得file文件上传框中的文件路径值,然后动态的创建一个iframe,并在里面建立一个新的file 文件框,提供post方式提交到后台。最后,返回结果到前台。五.总结 使用jQuery插件AjaxFileUpload实现无刷新上传文件非...

ajax如何 实现 文件上传

还提供了以下方法:upload:执行上传操作;stop:停止上传操作;dispose:销毁程序。var QuickUpload = function(file, options) {this.file = $$(file);this._sending = false;//是否正在上传this._timer = null;//定时...

PHP 用AJAX 做多文件上传

(1)可以同时上传多个文件;(2)类似AJAX的无刷新上传;(3)可以显示上传进度;(4)良好的浏览器兼容性;目前QQ空间和博客网站,比较先进的图片上传也是基于swf和js代码结合的做法。关于swfupload,你可以详细去百度百科上看,不...

jsp中使用jquery的ajaxfileupload插件怎么实现异步上传

&lt;!-- 执行上传文件操作的函数 --

多文件上传思路

我先说一下自己的设计的思路首先定义一个类classupload{dimfilenameasstring'用来保存上传文件的文件名字(包括路径)dimfilepathasstring'用来保存上传文件的服务端路径}定义一个类数组... 我先说一下自己的设计的思路首先定义一个类class...

...我使用ajaxfileupload.js插件,但是这个插件要求1.8以下的版本_百度...

1、引入AjaxFileUpload插件相关的js &lt;script type="text/javascript" src="&lt;%=basePath%&gt;resources/js/jquery-1.2.1.js"&gt; &lt;script type="text/javascript" src="&lt;%=basePath%&gt;resources/js/ajaxfileupload.js"&gt; 备...

使用ajaxfileupload插件,火狐https文件上传有大小限制吗

jQuery fileuploader 使用 HTML5 的 API ,支持文件拖拉上传、iframe 上传的回调,支持多个文件上传表单。Ajax Upload 该插件使用 XHR 用于上传多个文件,支持老的浏览器,使用隐藏的 iframe 进行处理,提供良好用户体验,同时...

ajaxFileUpload异步上传图片,服务器文件叫多,如何删除啊~~

比如有个图像上传预览。也是要及时预览并上传到服务器端。我用的是uploady上传插件。第一张图片上传后以用户名命名.JPG保存。第二次上传就判断当前用户的photo【这是上传图片保存在数据库中】是否存在,如果存在就以用户名#...

Top