首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

小妹请问JQuery ajaxfileupload文件上传的有关问题

2012-03-24 
小妹请教JQuery ajaxfileupload文件上传的问题!我写了一个JQuery ajaxfileupload的例子!各位师哥帮我看看

小妹请教JQuery ajaxfileupload文件上传的问题!
我写了一个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'];
?>

[解决办法]

PHP code
<?php $fileElementName = 'image'; echo $_FILES[$fileElementName]['size']; ?>
[解决办法]
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 code
<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>
[解决办法]
to luojxun:
 ajax是不能上传文件.
 但是ajaxfileupload完成了模拟iframe表单提交的过程,所以可以上传文件.
另外,你给的哪个链接,也是利用iframe下的表单提交完成的上传,只不过利用了php5.2的新特性而已.

to楼主:
 我需要说明的是,调用ajaxFileUpload()函数的时候,其实文件已经被上传到服务器了,尽管你没有接收,如果你再点击提交,就属于二次提交,呵呵.当然,这样做也可以.
  帮你修改一下,其实ajaxfileupload需要返回json格式.
  
PHP code
<?php//返回文件大小,返回错误为空,让前台显示文件大小$fileElementName = 'image'; $size = $_FILES[$fileElementName]['size'];echo "{msg: '$size',error: ''}";?> 


[解决办法]
“也是利用iframe下的表单提交完成的上传,只不过利用了php5.2的新特性而已.”

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

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

热点排行