php ajax 单个文件上传案例解析


upload_ajax.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>upload_ajax</title>

<link rel="stylesheet" type="text/css" href="css/base.css" />

<script type="text/javascript" src="upload.js" defer="defer"></script>

<style type="text/css">

body,div,form,p,legend{margin:0;padding:0;font-size:13px;font-family:"微软雅黑";}

body{text-align:center;padding:20px;}

#container{width:900px;text-align:left;margin:0 auto;}

.preview{width:406px;overflow:hidden;}

.preview img{width:400px;border:3px solid #eee;}

.headText{margin:10px 0;}

fieldset{padding:10px;}

#postBtn{width:80px;height:30px;line-height:30px;text-align:center;border:none;margin:10px 0;cursor:pointer;background:#67efef;font:13px "微软雅黑";-moz-box-shadow:0px 0px 3px rgba(0,0,0,0.4);-webkit-box-shadow:0px 0px 3px rgba(0,0,0,0.4);box-shadow:0px 0px 3px rgba(0,0,0,0.4);}

#postBtn:hover{background:#f90;}

iframe {display:none;}

</style>

</head>

 

<body>

 

<div id="container">

<fieldset>

<legend><strong>Ajax无刷新上传图片</strong></legend>

        <form action="ajaxupload.php" method="post" name="myform" id="myform" enctype="multipart/form-data">

            <p><input type="file" name="filename" /></p>

            <button id="postBtn">Upload</button>

        </form>

        <div id="upload_area"></div>

</fieldset>

</div>

</body>

</html>

 

ajaxupload.php

<?php

/**

 * upload_ajax.php

 *

 */

header("Content-type:text/html;charset=utf-8");

$filename = 'filename';

$destination_file = 'upload/';

$max_file_size = '2000000';

  //echo '<pre>'; print_r($_FILES); echo '</pre>';

 if(!is_uploaded_file($_FILES[$filename]['tmp_name'])){

           echo "请选择你想要上传的文件";

          exit;

       }

      if($max_file_size < $files['size']){

           echo "你上传的图片过大,本系统最大图片为2MB";

           exit;

       }

      $imgType = array(

             'image/gif'

             ,'image/png'

             ,'image/jpg'

             ,'image/x-png'

             ,'image/bmp'

        );

      if(!in_array($files['type'],$imgType)){

          echo $files['type']."不符合文件类型";

          exit;

      }

      if(!file_exists($destination_file)){

          mkdir($destination_file);

      }

      $filename=$files['tmp_name'];

      $destination = $destination_file.$files['name'];

      if (file_exists($destination)){

          echo "同名文件已经存在了";

          exit;

      }

      if(!move_uploaded_file ($files['tmp_name'], $destination_file.$files['name'])){

          echo "移动文件出错";

          exit;

      }

     //打印出上传文件到页面

      echo "<div class=\"preview\">"."<img src=\"{$destination}\" alt=\"{$files['name']}\" />"."</div>";

?>

 

upload.js

function addEvent(element, type, handler) { //事件加载函数

    if (!handler.$$guid) handler.$$guid = addEvent.guid++;

    if (!element.events) element.events = {};

        var handlers = element.events[type];

    if (!handlers) {

        handlers = element.events[type] = {};

        if (element["on" + type]) {

            handlers[0] = element["on" + type];

        }

    }

    handlers[handler.$$guid] = handler;

    element["on" + type] = handleEvent;

}

 

addEvent.guid = 1;

 

function removeEvent(element, type, handler) {

    if (element.events && element.events[type]) {

        delete element.events[type][handler.$$guid];

    }

}

function handleEvent(event) {

    var returnValue = true;

    event = event || fixEvent(window.event);

    var handlers = this.events[event.type];

    for (var i in handlers) {

        this.$$handleEvent = handlers[i];

        if (this.$$handleEvent(event) === false) {

            returnValue = false;

        }

    }

    return returnValue;

};

 

function fixEvent(event) {

    event.preventDefault = fixEvent.preventDefault;

    event.stopPropagation = fixEvent.stopPropagation;

    return event;

};

fixEvent.preventDefault = function() {

    this.returnValue = false;

};

fixEvent.stopPropagation = function() {

    this.cancelBubble = true;

};

 

function $m(theVar){

    return document.getElementById(theVar)

};

function remove(theVar){

    var theParent = theVar.parentNode;

    theParent.removeChild(theVar);

};

 

function isWebKit(){

    return RegExp(" AppleWebKit/").test(navigator.userAgent);

};

 

function ajaxUpload(form,url_action,id_element,html_show_loading,html_error_http){

    var detectWebKit = isWebKit();

    form = typeof(form)=="string"?$m(form):form;

    var erro="";

    if(form==null || typeof(form)=="undefined"){

        erro += "表单第一个参数错误.\n";

    }else if(form.nodeName.toLowerCase()!="form"){

        erro += "这不是一个表单.\n";

    }

    if($m(id_element)==null){

        erro += "第三个参数不存在.\n";

    }

    if(erro.length>0){

        alert("所有的上传错误:\n" + erro);

        return;

    }

    var iframe = document.createElement("iframe");

    iframe.setAttribute("id","ajax-temp");

    iframe.setAttribute("name","ajax-temp");

    iframe.setAttribute("width","0");

    iframe.setAttribute("height","0");

    iframe.setAttribute("border","0");

    iframe.setAttribute("style","width: 0; height: 0; border: none;");

    form.parentNode.appendChild(iframe);

    window.frames['ajax-temp'].name="ajax-temp";

    var doUpload = function(){

        removeEvent($m('ajax-temp'),"load", doUpload);

        var cross = "javascript: ";

        cross += "window.parent.$m('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";

        $m(id_element).innerHTML = html_error_http;

        $m('ajax-temp').src = cross;

        if(detectWebKit){

            remove($m('ajax-temp'));

        }else{

            setTimeout(function(){ remove($m('ajax-temp'))}, 250);

        }

    }

    addEvent($m('ajax-temp'),"load", doUpload);

    form.setAttribute("target","ajax-temp");

    form.setAttribute("action",url_action);

    form.setAttribute("method","post");

    form.setAttribute("enctype","multipart/form-data");

    form.setAttribute("encoding","multipart/form-data");

    if(html_show_loading.length > 0){

        $m(id_element).innerHTML = html_show_loading;

    }

    form.submit();

};

 

//初始化事件

function start(){

    var postBtn = $m('postBtn');

         addEvent(postBtn,'click',function(){

               var getForm = document.forms['myform'];

               var destination = 'upload_ajax.php';

               var hold_id ='upload_area';

               var load_wait ='文件上传中,请稍后...; <br/><img src="images/loader_light_blue.gif"  />';

               var load_error = '上传错误,请检查路径和文件名是否正确.';

 

               ajaxUpload(getForm,destination,hold_id,load_wait,load_error);

               return false;

    });

};

addEvent(window,'load',start);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值