PHP Ajax
<br /><script><br /> function ajaxFileUpload() {<br /> $.ajax({<br /> url: 'a.php',<br /> type: 'post',<br /> dateType: 'json',<br /> data: {upfile:$("#ss").val()},<br /> success: function (result) {<br /> alert("success");<br /> },<br /> error: function (result) {<br /> alert("error");<br /> }<br /> });<br /> }<br /> </script><br /> <body> <br /> <form enctype="multipart/form-data" action="a.php" method="post" name="upform" id="upform"><br /> 上传文件: <br /> <input name="upfile" type="file" onchange="ajaxFileUpload()" id="ss"><br /> <input type="submit" value="上传"><br><br /> </form><br /> </body> <br /><br />a.php<br /> if (!is_uploaded_file($_FILES["upfile"]["tmp_name"]))<br /> //如果我直间提交表单 $_FILES是有值的 (Array ( [upfile] => Array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => C:\Windows\phpC106.tmp [error] => 0 [size] => 7108 ) ) )<br /> //但我用ajax提交时, $_FILES是没有值,这个要怎么解决?<br /> {<br /> echo "图片不存在!";<br /> exit;<br /> }<br /><br />
<br /><div class="file_upload_control"><br /> <form class="file_control_form" enctype="multipart/form-data" action="ajax/upload.image.php"<br /> target="iframe_2C4B15FAD29E311E3CBACEADE9EE8F4A" method="post"><br /> <input type="hidden" name="APC_UPLOAD_PROGRESS" class="apc_id" value="2C4B15FAD29E311E3CBACEADE9EE8F4A"<br /> /><br /> <input type="hidden" value="2C4B15FAD29E311E3CBACEADE9EE8F4A" name="file_control_guid"<br /> /><br /> <input type="hidden" value="module_menu" name="file_control_module" /><br /> <!-----2C4B15FAD29E311E3CBACEADE9EE8F4A 这个是GUID-----><br /> 可以同时上传多个文件,用GUID进行区分<br /> <input name="2C4B15FAD29E311E3CBACEADE9EE8F4A" class="file_control" type="file"<br /> /><br /> <div class="file_preview"> <!---- 图片上传前预览-----><br /> <img class="file_preview_img" /><br /> </div><br /> <div class="opacity file_error"> <!----- 文件验证错误提示----><br /> <div class="tip"><br /> </div><br /> </div><br /> <div class="opacity file_progress"> <!---- 文件上传进度条-----><br /> <div class="total"><br /> <div class="current"><br /> </div><br /> </div><br /> </div><br /> <div class="opacity file_uploaded"> <!----- 上传成功后的Logo标志------><br /> <div class="success"><br /> </div><br /> </div><br /> <div class="delete"> <!----- 上传成功后 删除按钮 -----><br /> <img src="images/upload_delete.png" /><br /> </div><br /></div><br /></form><br /><!---- iframe 是异步提交的关键, 注意iframe name属性要和form target中的值完全一致 -----><br /><iframe style="display:none" src="" id="iframe_2C4B15FAD29E311E3CBACEADE9EE8F4A"<br />name="iframe_2C4B15FAD29E311E3CBACEADE9EE8F4A"><br /></iframe><br /></div><br />
<br />$(document).on('change','.file_upload_control .file_control',function(){<br /> //第一步获取file值<br /> var file = $(this).val();<br /> //第二步上传前校验<br /> if(!CheckFile(file)){<br /> ClearFileControl($(this)); //清空文件的内容<br /> return;<br /> }<br /> //第三步,如果上传的是图片,在本地进行上传前的预览<br /> PreviewImg($file);<br /> //第四步,提交上传<br /> $(this).parent().submit(); //提交form<br /> //第五步,如果上传的文件比较大(100M),查询进度,记得配置服务器支持大文件,否则上传不会成功!<br /> var file_guid = $(this).siblings('.file_control_guid').val();<br /> //第六步,查询文件上传进度,需要服务端程序进行配合,我这里举例的是PHP代码,需要使用PHP_APC.dll第三方插件协助 完成<br /> setTimeout('GetUploadProgress("'+file_guid+'"),500);<br />});<br />