PHP+Ajax

伟洪winni 2015-09-10 04:27:16

<script>
function ajaxFileUpload() {
$.ajax({
url: 'a.php',
type: 'post',
dateType: 'json',
data: {upfile:$("#ss").val()},
success: function (result) {
alert("success");
},
error: function (result) {
alert("error");
}
});
}
</script>
<body>
<form enctype="multipart/form-data" action="a.php" method="post" name="upform" id="upform">
上传文件:
<input name="upfile" type="file" onchange="ajaxFileUpload()" id="ss">
<input type="submit" value="上传"><br>
</form>
</body>

a.php
if (!is_uploaded_file($_FILES["upfile"]["tmp_name"]))
//如果我直间提交表单 $_FILES是有值的 (Array ( [upfile] => Array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => C:\Windows\phpC106.tmp [error] => 0 [size] => 7108 ) ) )
//但我用ajax提交时, $_FILES是没有值,这个要怎么解决?
{
echo "图片不存在!";
exit;
}

...全文
186 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
脸肿了 2015-09-15
  • 打赏
  • 举报
回复
mark!!!!!!
昆仑道长 2015-09-12
  • 打赏
  • 举报
回复
你这样做是行不通的。异步上传文件我知道的有三种方法,第一种HTML5 FILE API方法,可以直接读取文件内容。第二种通过Flash插件来上传,所有工作交由Flash来完成,比如SwfUpload。第三种就是纯JavaScript完成异步上传。下面我们来介绍第三种方法。要借用iframe。参考代码:

<div class="file_upload_control">
  <form class="file_control_form" enctype="multipart/form-data" action="ajax/upload.image.php"
  target="iframe_2C4B15FAD29E311E3CBACEADE9EE8F4A" method="post">
    <input type="hidden" name="APC_UPLOAD_PROGRESS" class="apc_id" value="2C4B15FAD29E311E3CBACEADE9EE8F4A"
    />
    <input type="hidden" value="2C4B15FAD29E311E3CBACEADE9EE8F4A" name="file_control_guid"
    />
    <input type="hidden" value="module_menu" name="file_control_module" />
    <!-----2C4B15FAD29E311E3CBACEADE9EE8F4A 这个是GUID----->
    可以同时上传多个文件,用GUID进行区分
    <input name="2C4B15FAD29E311E3CBACEADE9EE8F4A" class="file_control" type="file"
    />
    <div class="file_preview"> <!---- 图片上传前预览----->
      <img class="file_preview_img" />
    </div>
    <div class="opacity file_error"> <!----- 文件验证错误提示---->
      <div class="tip">
      </div>
    </div>
    <div class="opacity file_progress"> <!---- 文件上传进度条----->
      <div class="total">
        <div class="current">
        </div>
      </div>
    </div>
    <div class="opacity file_uploaded"> <!----- 上传成功后的Logo标志------>
      <div class="success">
      </div>
    </div>
    <div class="delete">    <!----- 上传成功后 删除按钮 ----->
      <img src="images/upload_delete.png" />
    </div>
</div>
</form>
<!---- iframe 是异步提交的关键, 注意iframe name属性要和form target中的值完全一致 ----->
<iframe style="display:none" src="" id="iframe_2C4B15FAD29E311E3CBACEADE9EE8F4A"
name="iframe_2C4B15FAD29E311E3CBACEADE9EE8F4A">
</iframe>
</div>

$(document).on('change','.file_upload_control .file_control',function(){
    //第一步获取file值
    var file = $(this).val();
   //第二步上传前校验
    if(!CheckFile(file)){
        ClearFileControl($(this)); //清空文件的内容
        return;
    }
     //第三步,如果上传的是图片,在本地进行上传前的预览
     PreviewImg($file);
     //第四步,提交上传
     $(this).parent().submit(); //提交form
     //第五步,如果上传的文件比较大(100M),查询进度,记得配置服务器支持大文件,否则上传不会成功!
     var file_guid = $(this).siblings('.file_control_guid').val();
     //第六步,查询文件上传进度,需要服务端程序进行配合,我这里举例的是PHP代码,需要使用PHP_APC.dll第三方插件协助       完成
     setTimeout('GetUploadProgress("'+file_guid+'"),500);
});
伟洪winni 2015-09-11
  • 打赏
  • 举报
回复
伟洪winni 2015-09-10
  • 打赏
  • 举报
回复
伟洪winni 2015-09-10
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
直接读取 type=file 控件的值是不能上传文件的 ajax 文件上传需使用第三方控件或模拟表单提交
能不能发个参考例子给我参考下??
xuzuning 2015-09-10
  • 打赏
  • 举报
回复
直接读取 type=file 控件的值是不能上传文件的 ajax 文件上传需使用第三方控件或模拟表单提交
断点Bingo 2015-09-10
  • 打赏
  • 举报
回复
enctype="multipart/form-data" ajax提交的数据格式就不是这样了。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧