小妹请教JQuery ajaxfileupload文件上传的问题!

wangtiantian23 2008-11-26 02:21:47
我写了一个JQuery ajaxfileupload的例子!

各位师哥帮我看看哪里不对!为什么打印不出来文件大小!总打印[Object Error]

Jquery_upload.html

<html>
<head>
<title>JQuery Upload Ajax学习</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="ajaxfileupload.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="ajaxfileupload.js"></script>
<script language="javascript">
function ajaxFileUpload()
{
$("#loading")
.ajaxStart(function(){
$(this).show();
})
.ajaxComplete(function(){
$(this).hide();
});

$.ajaxFileUpload
(
{
url:'Jquery_validate.php',
secureuri:false,
fileElementId:'picfile',
dataType: 'json',
success: function (data, status)
{
if(typeof(data.error) != 'undefined')
{
if(data.error != '')
{
alert(data.error);
}else
{
alert(data.msg);
}
}
},
error: function (data, status, e)
{
alert(e);
}
}
)
return false;
}
</script>
</head>

<body>
<!--上传表单,指定target属性为浮动框架iframe1-->
<form action="upload.php" method="post" enctype="multipart/form-data" name="upload_img">
选择要上传的图片:<input type="file" name="image" id="picfile" name="picfile" onchange="ajaxFileUpload()"><br/>
<input type="submit" value="上传图片" >
<div id="loading" ></div>
</form>
<!--显示提示信息的层-->

</body>
</html>

Jquery_validate.php
<?php
$fileElementName = 'picfile';
echo $_FILES[$fileElementName]['size'];
?>
...全文
4802 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Ygb_Prince 2012-03-21
脚本:fileElementId:'picfile',
与html的<input type="file" name="picfile"/>
意思是:fileElementId 与 name的名称要相同。。
回复
zhengchanng 2010-10-29
嘿嘿,路过。今天我遇到这个问题了,不过已经解决!谢谢大家的分享!!!
回复
lovemexiaoyu 2009-12-29
看不太懂,学习了
回复
raoxy1982 2009-06-15
回复
raoxy1982 2009-06-15
回复
程序猿之殇 2008-11-26
[Quote=引用 9 楼 luojxun 的回复:]
“也是利用iframe下的表单提交完成的上传,只不过利用了php5.2的新特性而已.”

就是用表单啊,我又没说不是是用表单,上传文件ajax是不能用的。
<input onclick="startProgress(); return true;" type="submit" value="上传"/> 就是提交表单的按钮,同时调用一个javascript函数而已嘛。

“ajaxfileupload完成了模拟iframe表单提交的过程”的说法不准确,确切的说不是模拟而是就是使用表单。
[/Quote]

ajaxfileupload中动态创建iframe和表单,然后表单提交,当然也可以说是表单提交.但因为这个表单不是长期存在的,所以我说了模拟,呵呵.
回复
luojxun 2008-11-26
因为出于安全考虑,javascript是不能对文件有太多操作的,如果ajax可以传文件或“模拟iframe表单提交的过程”的话那黑客就太好当了。呵呵
回复
luojxun 2008-11-26
“也是利用iframe下的表单提交完成的上传,只不过利用了php5.2的新特性而已.”

就是用表单啊,我又没说不是是用表单,上传文件ajax是不能用的。
<input onclick="startProgress(); return true;" type="submit" value="上传"/> 就是提交表单的按钮,同时调用一个javascript函数而已嘛。

“ajaxfileupload完成了模拟iframe表单提交的过程”的说法不准确,确切的说不是模拟而是就是使用表单。
回复
帮小妹顶一下
回复
程序猿之殇 2008-11-26
另外,楼主不要一帖多发了.
在一个帖子里就可以了,可以给哪个帖加分的.
回复
程序猿之殇 2008-11-26
to luojxun:
 ajax是不能上传文件.
 但是ajaxfileupload完成了模拟iframe表单提交的过程,所以可以上传文件.
另外,你给的哪个链接,也是利用iframe下的表单提交完成的上传,只不过利用了php5.2的新特性而已.

to楼主:
 我需要说明的是,调用ajaxFileUpload()函数的时候,其实文件已经被上传到服务器了,尽管你没有接收,如果你再点击提交,就属于二次提交,呵呵.当然,这样做也可以.
  帮你修改一下,其实ajaxfileupload需要返回json格式.
  

<?php
//返回文件大小,返回错误为空,让前台显示文件大小
$fileElementName = 'image';
$size = $_FILES[$fileElementName]['size'];
echo "{msg: '$size',error: ''}";
?>
  

回复
makui 2008-11-26
不是没有人帮你看,而是你这个想法不可行;
要在上传文件之前检查文件大小就只能在客户端完成
可以考虑使用flash 的FileReference类来实现,但是你必须用flash来作表单提交你的数据(文件上传)
回复
luojxun 2008-11-26
ajax是不能上传文件的,因此你的onchange="ajaxFileUpload()"是得不到回应的

如果你要用ajax,只能提交了后通过ajax得到
提交按钮
<input onclick="startProgress(); return true;" type="submit" value="上传"/>

顺便回答你上一帖某位同志的问题。
startProgress(); 是通过设定定时发送查询得到结果的。
php制作实时上传进度就是使用这方法,有兴趣了解的话看
http://www.ibm.com/developerworks/cn/opensource/os-php-v525/
PHP V5.2 中的新增功能,第 5 部分: 跟踪文件上传进度

如果你要在客户端得到文件大小可以使用

<html>
<head>
<title></title>
<script type="text/javascript">  
function getFileSize(filePath)  
{  
  var image=new Image();  
  image.dynsrc=filePath;  
  alert(image.fileSize);  
}
</head>
</script>  
<body>  
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">  
</body>
</html>

不过要注意这只能在ie下可以得到(ie7应该不行,没测试);firefox是不行的
回复
wangtiantian23 2008-11-26
没人帮我看了吗?
回复
wangtiantian23 2008-11-26
改了!这回成了没反应了!
回复
phpboy 2008-11-26

<?php
$fileElementName = 'image';
echo $_FILES[$fileElementName]['size'];
?>



<body>
<!--上传表单,指定target属性为浮动框架iframe1-->
<form action="upload.php" method="post" enctype="multipart/form-data" name="upload_img">
选择要上传的图片: <input type="file" name="image" id="picfile" name="picfile" onchange="ajaxFileUpload()"> <br/> // 你用了二个name
<input type="submit" value="上传图片" >
<div id="loading" > </div>
</form>
<!--显示提示信息的层-->
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-11-26 02:21
社区公告
暂无公告