php+js实现异步图片上传实例分享


Posted in PHP onJune 02, 2014

upload.php

<?php
if(isset($_FILES["myfile"]))
{
$ret = array();
$uploadDir = 'images'.DIRECTORY_SEPARATOR.date("Ymd").DIRECTORY_SEPARATOR;
$dir = dirname(__FILE__).DIRECTORY_SEPARATOR.$uploadDir;
file_exists($dir) || (mkdir($dir,0777,true) && chmod($dir,0777));
if(!is_array($_FILES["myfile"]["name"])) //single file
{
$fileName = time().uniqid().'.'.pathinfo($_FILES["myfile"]["name"])['extension'];
move_uploaded_file($_FILES["myfile"]["tmp_name"],$dir.$fileName);
$ret['file'] = DIRECTORY_SEPARATOR.$uploadDir.$fileName;
}
echo json_encode($ret);
}
?>

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Html5 Ajax 上传文件</title>
    <meta charset="utf-8">
<script type="text/javascript">

    var xhr;
    function createXMLHttpRequest()
    {
        if(window.ActiveXObject)
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if(window.XMLHttpRequest)
        {
            xhr = new XMLHttpRequest();
        }
    }

    function UpladFile()
    {
        var fileObj = document.getElementById("file").files[0];
        var FileController = 'upload.php';
        var form = new FormData();
        form.append("myfile", fileObj);
        createXMLHttpRequest();
        xhr.onreadystatechange = handleStateChange;
        xhr.open("post", FileController, true);
        xhr.send(form);
    }

    function handleStateChange()
    {
        if(xhr.readyState == 4)
        {
            if (xhr.status == 200 || xhr.status == 0)
            {
                var result = xhr.responseText;
                var json = eval("(" + result + ")");
                alert('图片链接:\n'+json.file);
            }
        }
    }

</script>

<style>
    .txt{ height:28px; border:1px solid #cdcdcd; width:670px;}
    .mybtn{ background-color:#FFF; line-height:14px;vertical-align:middle;border:1px solid #CDCDCD;height:30px; width:70px;}
    .file{ position:absolute; top:0; right:80px; height:24px; filter:alpha(opacity:0);opacity: 0;width:260px }
</style>
</head>

<body>
<div class="form-group">
    <label class="control-label">图片</label>
    <br/>
    <input type='text' name='textfield' id='textfield' class='txt' />
    <span onclick="file.click()"  class="mybtn">浏览...</span>
    <input type="file" name="file" class="file" id="file" size="28" onchange="document.getElementById('textfield').value=this.value" />
    <span onclick="UpladFile()" class="mybtn">上传</span>
</div>
</body>

</html>
PHP 相关文章推荐
VML绘图板②脚本--VMLgraph.js、XMLtool.js
Oct 09 PHP
聊天室php&amp;mysql(二)
Oct 09 PHP
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
php include的妙用,实现路径加密
Jul 29 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php session的应用详细介绍
Mar 22 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
php实例分享之html转为rtf格式
Jun 02 #PHP
php 伪静态之IIS篇
Jun 02 #PHP
php伪静态之APACHE篇
Jun 02 #PHP
50个PHP程序性能优化的方法
Jun 02 #PHP
浅谈php扩展imagick
Jun 02 #PHP
PHP小技巧之函数重载
Jun 02 #PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 #PHP
You might like
php图片验证码代码
2008/03/27 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
php 猴子摘桃的算法
2017/06/20 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
asp批量修改记录的代码
2008/06/25 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
Python中的super用法详解
2015/05/28 Python
python删除列表内容
2015/08/04 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
python第三方库学习笔记
2020/02/07 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
毕业生实习鉴定
2013/12/11 职场文书
感恩教育活动总结
2014/05/05 职场文书
管理工程专业求职信
2014/08/10 职场文书
律师授权委托书范本
2014/10/07 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
检察院起诉书
2015/05/20 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python