本来想用插件上传图片的,后来自己写了一个简单的js实现异步的图片上传,不多说上代码很easy

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>

js php xmlrequest 上传图片的更多相关文章

  1. ajaxFileUpload.js 无刷新上传图片,支持多个参数同时上传,支持 ie6-ie10

    /* 131108-xxj-ajaxFileUpload.js 无刷新上传图片 jquery 插件,支持 ie6-ie10 依赖:jquery-1.6.1.min.js 主方法:ajaxFileUpl ...

  2. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  3. Asp.Net MVC 中JS通过ajaxfileupload上传图片获取身份证姓名、生日、家庭住址等详细信息

    客户要求用身份证图片上传获取身份证的详细信息就下来研究了一下(现在的客户真的懒 身份证信息都懒得输入了哈哈...),经过慢慢研究,果然皇天不负有心人搞出来了.这个借助的是腾讯的一个SKD  腾讯优图云 ...

  4. JS 从剪贴板上传图片

    用Ubuntu两年多了,习惯了Ubuntu的操作感觉比WIN用起来还爽,就一点不爽,生态应用很少,好多WIN上好用的软件在Ubuntu找不到的,希望以后的软件可以做到一次编译全平台通用. 即使用上Wi ...

  5. js前台检测上传图片大小的总结

    最近一直在做上传图片的前端检测,不通过后台就完成这个动作.但实际是,实际效果差强人意. html5的fileApi出来后,对文件的处理才变得方便了些,对它的简单介绍可以看我的前面的博客.现在支持的浏览 ...

  6. js预览上传图片

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. js拖拽上传图片

    有时候,在开发中,需要遇到拖拽上传图片的需求,即从磁盘选中一张或多张图片,然后按着鼠标把图片拖动到页面上指定的区域,实现图片的上传. 1.后端上传图片的接口 我是之前用vue写一个简单的后台系统的时候 ...

  8. 原生js复制粘贴上传图片前后台代码,兼容firebox,chrome, ie11,亲测有效

    需求:粘贴上传图片,截图工具,右键粘贴,或者ctrl+v粘贴 方法1:可直接套用富文本框的图片上传功能,完成复制粘贴 缺点:麻烦,样式难控制 方法2:用原生js完成,以下案例基于此,样式请自己动手调整 ...

  9. js 预处理用户上传图片

    前几个月闲得无聊写得一段代码,没想最近刚好用上了,在硬盘里翻了半天找回来,还没好好整理直接用上了手机用户拍照上传的图片一般都在1M 到4M 之间,如果只是用作头像尺寸就可以缩小很多,1M甚至几M的图转 ...

随机推荐

  1. objective-C学习笔记(九)ARC

    ARC叫自动引用计数Automatic Reference Counting.针对堆上的对象,管理对象的创建和释放. 哪些对象受ARC管理: OC对象指针 Block指针 使用_attribute_( ...

  2. Objective-c 数组对象

    首先我们必须知道数组的概念:数组是有序的对象集合,一般情况下,一个数组的对象都是相同类型的.数组当中也存在可变数组和不可变数组. 1. 不可变数组 (NSArray) 可变数组 NSMutable 是 ...

  3. AOP annotation

    1.xml文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http ...

  4. 1.1. chromium源代码分析 - chromiumframe - 介绍

    本人能力有效,面对chromium庞大的代码就头大.还是先由前辈的chromiumFrame入手. 1. chromeFrame概貌 chromiumFrame是前辈的心血之作,以最小化的方式抽出ch ...

  5. HDOJ 3415 Max Sum of Max-K-sub-sequence(单调队列)

    因为是circle sequence,可以在序列最后+序列前n项(或前k项);利用前缀和思想,预处理出前i个数的和为sum[i],则i~j的和就为sum[j]-sum[i-1],对于每个j,取最小的s ...

  6. YII框架下实现密码修改

    YII2 实现修改密码功能 主要难点: 1.密码加密 YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数 ...

  7. php制作数据字典

    /** * 生成mysql数据字典 */ header("Content-type:text/html;charset=utf-8"); // 配置数据库 $database = ...

  8. SQLITE 多进程查询出错database is locked

    程序比较简单: 父进程查询数据库A表,没有更新操作 子进程同时查询数据库A表,查询出来的内容更新B表. 两个进程都放到while(1)循环中,速度慢的话就是2S执行一次就没有错,执行的速度快的话就会报 ...

  9. 盛希泰:办公室就像男人的春药——人的一生的精力是有限的,你把有限的时间分配给谁决定你的成败——你有N多选择,你人生的积累就是N多选择加起来的结果

    欢迎关注“创事记”的微信订阅号:sinachuangshiji 创事记注:12月22日晚上,盛希泰在清华大学旧经管报告厅面对清华师生讲了一堂<创业引导课>.本文由洪泰帮根据课堂录音整理完成 ...

  10. 10003 Cutting Sticks(区间dp)

      Cutting Sticks  You have to cut a wood stick into pieces. The most affordable company, The Analog ...