AJAX文件上传施行与分析,ajax上传图片文件

后面朋友说的不刷新上传文件。最强力的化解方案就是上英特网搜各个JS库,附带多图上传,预览,乃至是图表管理等特殊技艺。那么1旦不接触第3方的库,好倒霉利用ajax来做。就以此主题材料,有人给出的化解方案是正视iframe,这里就不赘述了。可是Html5是个好东西,他提供了FormData,FormData能够辅助大家拼凑参数,以致文件财富。那样,大家就能够轻易用$.ajax不刷新上传。当然也无需iframe。

运用H四天性FormData实现不刷新文件上传,

前面朋友说的不刷新上传文件。最强力的化解方案正是上网络搜种种JS库,附带多图上传,预览,以致是图形处理等特殊技能。那么只要不接触第3方的库,可以还是不可以选择ajax来做。就这么些标题,有人给出的缓和方案是正视iframe,这里就不赘述了。可是Html5是个好东西,他提供了FormData,FormData能够援助大家拼凑参数,乃至文件能源。那样,大家就足以轻便用$.ajax不刷新上传。当然也无需iframe。

代码

下列是前者部分。

<!DOCTYLE html>
<meta charset=utf->
<head>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/../jquery.min.js"></script>
</head>
<script type="text/javascript">
$(function(){
  $('#add').submit(function(){
    var data = new FormData($('#add')[]); 
    console.log(data);
    $.ajax({ 
      url: 'ajax.php', 
      type: 'POST', 
      data: data, 
      dataType: 'JSON', 
      cache: false, 
      processData: false, 
      contentType: false, 
      success:function(data){ 
        //alert(data);
        alert("UploadFile Success");
      }  
    }); 
    return false;  
  });
});
</script>
<form id='add'>
<input type="text" name='book'></input>
<input type="file" name='source'></input>
<input type="submit">
</form>

不多废话里面包车型的士代码,就讲一行代码

var data = new FormData($('#add')[0]);

FormData是多个表单对象,他能够将表单对象的表单域分别造成key=>value。那么是否我们相濡以沫再拼接额外的key=>value呢,答案是足以的,实际情况能够百度FormData。

还有正是干吗是$(‘#AJAX文件上传施行与分析,ajax上传图片文件。add’)[0]?

自己只可以说 js = jQuery[0];

PHP部分

<?php 
  header('Content-Type:application/json; charset=utf-8');
  echo json_encode(array($_FILES,$_REQUEST));
?>

那边只是做下测试,假若能来看$_FILES有东西,那么申明我们是能够做上传的。

测试上传

能够见见ajax请求到了ajax.php

 澳门葡京 1

看下preview,就足以看到再次回到$_FILES的连锁消息了。

澳门葡京 2

从前朋友说的不刷新上传文件。最强力的减轻方案便是上网络搜各类JS库,附带多图上传,预览,甚…

  对于HTML五已经帮忙AJAX文件上传了,但假诺急需合作的话依旧得用一点小技艺的,HTML伍等等介绍,先来探视从前小编们是怎么写的。

那边用的是一个潜藏的iframe,那样能够让form表单提交到这一个iframe里面,用户就看不到页面包车型客车刷新了

代码

  网络恐怕会有部分叫AJAX文件上传插件,但在AJAX贰.0事先是不只怕完毕的,因为浏览器的缘由,AJAX根本获取不了文件新闻,当然这里并不是说就无法文件上传了,只是说在AJAX贰.0此前所谓的AJAX文件上传都以冒充的,宗旨更本未有用AJAX,而是利用iframe落成的,下边大家来探视哪些运用iframe完成页面无刷新上传文件。

 

下列是前者部分。

 

 

<!DOCTYLE html>
<meta charset=utf->
<head>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/../jquery.min.js"></script>
</head>
<script type="text/javascript">
$(function(){
  $('#add').submit(function(){
    var data = new FormData($('#add')[]); 
    console.log(data);
    $.ajax({ 
      url: 'ajax.php', 
      type: 'POST', 
      data: data, 
      dataType: 'JSON', 
      cache: false, 
      processData: false, 
      contentType: false, 
      success:function(data){ 
        //alert(data);
        alert("UploadFile Success");
      }  
    }); 
    return false;  
  });
});
</script>
<form id='add'>
<input type="text" name='book'></input>
<input type="file" name='source'></input>
<input type="submit">
</form>

iframe无刷新上传文件版。

前些时间在化解ajax上传文件时折腾了好1阵。直接用$.post上传文本新闻一定是不曾难题的。不过$.post直接上传图片是不可行的。

不多废话里面包车型大巴代码,就讲一行代码

html:

新生收看互连网的某些化解方案,有现存的ajax上传文件的包裹的章程也许有选用flash的。flash确实是个好情势不过不是每一个人都会flash的同时下载下来现存的情势要做修改也不是件易事,且文件相对非常大。

var data = new FormData($('#add')[0]);

<form action=”” method=”POST”
target=”postFile” enctype=”multipart/form-data”>
  <input type=”file” name=”fs”>
  <input type=”submit” value=”上传”>
</form>
<iframe name=”postFile” frameborder=”0″></iframe>

最终只好没有主见只会随声附和iframe来实现。开掘非常的简要。

FormData是2个表单对象,他得以将表单对象的表单域分别产生key=>value。那么是或不是大家休戚与共再拼接额外的key=>value呢,答案是足以的,实际情况可以百度FormData。

php:

<iframe name=”ajaxUpload” style=”display:none”></iframe>

还有就是为什么是$(‘#add’)[0]?

<?php
  if(empty($_FILES)){
    exit(‘空文件’);
  }
  if($_FILES[‘fs’][‘error’]!=0){
    exit(‘上传败北’);
  }
  // 移动临时文件到a目录下
  move_uploaded_file($_FILES[‘fs’][‘tmp_name’],’a/’.$_FILES[‘fs’][‘name’]);

  echo ‘ok’;
?>

<form name=”from壹” id=”from一” method=”post” action=”url”
 enctype=”multipart/form-data” target=”ajaxUpload”>    
这里是第二。要上传文件enctype那一个天性不可少,target的值改为iframe的name的值。

自个儿只可以说 js = jQuery[0];

效果:

<table>

PHP部分

澳门葡京 3

   <tr>

<?php 
  header('Content-Type:application/json; charset=utf-8');
  echo json_encode(array($_FILES,$_REQUEST));
?>

 

      <td>附件:</td>

那边只是做下测试,如若能来看$_FILES有东西,那么注解我们是可以做上传的。

能够看来页面并不曾被刷新。

      <td><input type=”file” id=”document”
name=”document”/></td> 

测试上传

规律正是将form里面包车型客车多寡提交到iframe框架之中。

   </tr> 

能够看到ajax请求到了ajax.php

 

</table> 

 澳门葡京 4

给用户提醒个正着上传相比好一些。

</form>

看下preview,就足以看看重回$_FILES的连锁音信了。

html:

 

澳门葡京 5

<style>
#img{
display:none;
}
</style>

 

<form action=”” method=”POST”
target=”postFile” enctype=”multipart/form-data”>
  <input type=”file” name=”fs”>
  <input type=”submit” value=”上传”>
</form>
<img src=”loader.png” alt=”” id=”img”>
<iframe name=”postFile” frameborder=”0″></iframe>
<script>
  var form = document.getElementsByTagName(‘form’)[0];
  var img = document.getElementById(‘img’);
  form.onsubmit = function(){
    img.style.display = ‘block’;
  };
</script>

上面是HTML

你可能感兴趣的篇章:

  • H5图片压缩与上传实例
  • H伍手提式有线电话机端多文件上传预览插件
  • 移步端应用H⑤完成收缩图片上传成效
  • vuejs开拓组件分享之H伍图纸上传、压缩及摄影旋转的标题管理
  • Angular下H5上传图片的措施(可多张上传)
  • H伍移动端图片压缩上传开辟流程
  • H伍上传本地图片并预览作用

php:

上边写一下js代码,作者是用的jQuery所以在用的时候载入jquery的库是至关重要的。

<?php
if(empty($_FILES)){
  exit(‘空文件’);
}
if($_FILES[‘fs’][‘error’]!=0){
  exit(‘上传战败’);
}

// 移动不经常文件到a目录下
move_uploaded_file($_FILES[‘fs’][‘tmp_name’],’a/’.$_FILES[‘fs’][‘name’]);

// 文件上传成功之后将唤起隐藏。

echo
‘<script>parent.document.getElementById(“img”).style.display=”none”;</script>’;

echo ‘ok’;
?>

 $(function(){

澳门葡京 6

        if($.browser.msie){

 

             window.form1.submit();}else{

ok。然则这种方式纵然能够完成但有一点有个别欠缺,举例不或许掌握文书到底上传了略微。接下来介绍HTML5新添的API,特别有力。

             $(“#form1”).submit();}

 

       });

html伍剧增了三个FormData对象,它能够用来操作表单。

 //这里是做了三个浏览器版本的决断,因为IE是不太符合标准的多个浏览器,特别是IE陆。IE陆是不直接支持$(“#idName”).submit();这种措施的。

 

下一场在服务端要如何吧,而且还得赶回多个值,直接submit是无力回天重临值的

事例1:上传文件

public void Upload()

<form action=”” method=”POST”
enctype=”multipart/form-data”>
  <input type=”file” name=”fs”>
  <input id=”btn” type=”button” value=”上传”>
</form>
<img src=”loader.png” alt=”” id=”img”>

<script>
var form = document.getElementsByTagName(‘form’)[0];
var btn = document.getElementById(‘btn’);
var img = document.getElementById(‘img’);

btn.onclick = function(){
  var formData = new FormData(form);
  ajax(formData);

  img.style.display = ‘block’;
};

function ajax(data){
  var xhr = new XMLHttpRequest();
  xhr.open(‘POST’,”);
  xhr.send(data);
  xhr.onreadystatechange = function(){
    if(this.readyState===4 && this.status===200){
      if(this.responseText===’1′){
        parent.document.getElementById(“img”).style.display=”none”;
        console.log(‘ok’);
      }
    }
  };
}
</script>

{

直接把form表单传到FormData中就能够了,它个中会帮您处理。除了上传文件以外,FormData再有不少效应,比如事先大家付出表单还得二个四个操作表单的值,未来大家经过一贯把form写进去的能够高达一样的效应,一同来探望。

    HttpPostedBase
ff=Request.Files[“document”];//这里是获取上传的公文流,也足以用索引值来表示假如是五个文本的话

澳门葡京 7

   string fileName=System.DateTime.Now+ff.FileName.ToString();  
//这里抽取来的文书名是未有后缀的,所以要封存的话还亟需抽取文件拓展名。这里就不写过细,只是为描述那样贰个思路。

和上传图片一样,就不贴代码了。

    try{

除此而外那个,FormData还同意你手动创制数量。

          SaveAs(documentPath+fileName+extendtionName); 

 

           Response.Write(“<script type=’text/javascript’
type=’language’>parent.window.callBackMethod(‘上传成功’);</scrpt>”);

采用方法如下:

       } 

var formData = new FormData();
formData.append(‘sex’,’男’);

     catch

澳门葡京 8

     {

 

       Response.Write(“<script type=’text/javascript’
type=’language’>parent.window.callBackMethod(‘上传战败’);</scrpt>”);
 //parent.window.methodName();这些是JS调用父页的不2法门。因为前日依样葫芦贰个iframe上传文件,那么些iframe的效应正是3个中间站的效益。在父页点击上传后通过target会将页面文书档案流传入iframe中再上传服务端作管理。服务端有响应之后然后再在iframe里面突显出来,而不是平素在父页面展现出结果。这里也许正是三个alert()弹出四个会话框提示一下,倘诺是这么那么不调父页方法也行。假若想把那提醒的剧情丰富一点诸如弹出个近乎人人网的水白灰的对话框之类的。

只可以说那么些主意依然很庞大的,具备那个艺术我们能够干大多事。

     } 

 

 关于文件的还新扩大了1个files属性,来探望。

 模拟iframe其实是页面局地更新,不过页面中的这么些iframe未有内容还要依然不显得的,所以它刷新了一心不会影响到一切页面。

澳门葡京 9


 

近来看了一些jQuery即时上传的插件,总算看懂了些门路。现将其非常基本的一有的抽出出来,以期用最简便易行的例证来注明jQuery图片即时上传的规律。

经过files属性大家能够获得文件的轻重以及文件名等,另外仍是能够将这么些指标传到FormData里面当文件上传。

  首先本用例壹共包蕴1个文本:

 

    壹、上传面板HTML文件。

有了它大家还足以做图片预览功用哦,可是须要优秀window.U汉兰达L.createObjectU凯雷德L来操作。

    二、上传管理PHP文件。

var f = document.getElementById(‘f’).files[0];

var img = new Image();
img.src = window.URL.createObjectURL(f);
document.body.appendChild(img);

    3、jQuery库。

澳门葡京 10

  率先、上传面板HTML文件(index.html)。

 

          
其主要涵盖了jQuery库、即时上传所需js、表单和iframe框架。下面是其源码,当中已附详细注释。

ok。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jQuery Upload Image</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="zh-CN" />
    <!--<script type="text/javascript" src="jquery-1.6.2.min.js"></script>-->    <!-- 本地jquery库-->
    <script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script>
</head>
<body>
<style>
    #exec_target{display:none;width:0;height:0;}
    #feedback{width:1200px;margin:0 auto;}
    #feedback img{float:left;width:300px;height:300px;}    
</style>
<script type="text/javascript">
$(document).ready(function(){
    //选择文件成功则提交表单
    $("#upload_file").change(function(){
        if($("#upload_file").val() != '') $("#submit_form").submit();
    });
    //iframe加载响应,初始页面时也有一次,此时data为null。
    $("#exec_target").load(function(){
        var data = $(window.frames['exec_target'].document.body).find("textarea").html();
        //若iframe携带返回数据,则显示在feedback中
        if(data != null){
            $("#feedback").append(data.replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
            $("#upload_file").val('');
        }
    });
});
</script>
<form id="submit_form" method="post" action="submit_form_process.php" target="exec_target" enctype="multipart/form-data">
    <input type="file" name="upload_file" id="upload_file">        <!-- 添加上传文件 -->
</form>
<iframe id="exec_target" name="exec_target"></iframe>    <!-- 提交表单处理iframe框架 -->
<div id="feedback"></div>    <!-- 响应返回数据容器 -->
</body>
</html>

 ajax二.0还新添了1晃性情和事件,这里拿文件上传事件来说。

第1、上传管理PHP文件(submit_form_process.php)。

奇迹大家必要做文件上传进程条,那么大家就足以利用上边包车型客车这几个措施。

    其重大包罗了图片文件的简练上传,及再次回到图片标签<img>,在那之中蕴藏刚上传的图形。上边是其源码。

ajax里面有1个upload属性,表示文件上传。里面还有多少个文本上传中的事件onprogress

<?php
    //header('content-type:text/html charset:utf-8');  /* 这句要删除,否则可能会导致IE下回传HTML变成下载 */
    //不存在当前上传文件则上传
    if(!file_exists($_FILES['upload_file']['name'])) move_uploaded_file($_FILES['upload_file']['tmp_name'],iconv('utf-8','gb2312',$_FILES['upload_file']['name']));
    //输出图片文件<img>标签
    echo "<textarea><img src='{$_FILES['upload_file']['name']}'/></textarea>";
//End_php

var xhr = new XMLHttpRequest();
xhr.open(‘POST’,”);

xhr.upload.onprogress = function(e){
  console.log((e.loaded/e.total)*澳门葡京,100);
};

xhr.onreadystatechange = function(){
 //xxxxx
};

xhr.send(data);

总结之原理透视和分析:

咱俩来打字与印刷一下那些事件之中都有啥样事物。

    讲到jQuery即时上传,不通晓其原理的人首先主张一般都是运用AJAX(补注:当时不知底有FormData对象),笔者也尝尝过。不过,由于上传文件区别于一般数量的POST,它必要表单form的提交来成功。由此,jQuery上传插件也是将<input
type=”file”>的数目转至2个新生的form当大校其交给,而表单的target指向新兴的iframe,在iframe中做表单提交后的拍卖,实现后iframe会重新加载并包括管理结果,通过iframe的load事件便可捕捉并得随管理结果,回传至原表单所在的页面(feedback)中,实现jQuery即时上传的效力。而在表单提交的时候,为了落到实处选用文件后即时交由表单,则使用了input标签的change事件(index.html
L1九-二一),只要选用了文本,input的值就能产生变化,此时就足以交到表单实行拍卖了。

xhr.upload.onprogress = function(e){
  console.log(e);
};

软件包下载:最简易的jQuery即时上传示例

澳门葡京 11

 

 

/***************************************  
追加 
***************************************/

loaded:当前已上传的文件大小

受@东方翔 议论提醒,测试了眨眼间间$.ajax
的FormData对象,然后发现成功了(FF、Chrome测试成功),嘿嘿~上边是源码,调节文件为submit_form_process.php不变。

total:文件总大小

特别的:contentType: false,
            processData: false,

 

这多个参数是必须的。

大家通过(e.loaded/e.total)*100就足以算出它们的百分比来了。

缺少contentType: false,$_FILES值为空。

 

缺点和失误processData:
false,FF调整台报错:“NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: Illegal
operation on WrappedNative prototype object”,间接不能够运作。

澳门葡京 12

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>FormData</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="zh-CN" />
    <script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script>
</head>
<body>
<style>
    #feedback{width:1200px;margin:0 auto;}
    #feedback img{float:left;width:300px;height:300px;}
</style>
<div>
    <!-- 点击图片添加文件方式 -->
    <img src="http://f7-preview.awardspace.com/zjmainstay.co.cc/jQueryExample/jquery_upload_image/files/addfile.jpg" onclick="getElementById('inputfile').click()" title="点击添加图片" alt="点击添加图片">
    <input type="file" name="image" style="opacity:0;filter:alpha(opacity=0);" id="inputfile"/>
</div>
<div id="feedback"></div>    <!-- 响应返回数据容器 -->
<script type="text/javascript">
$(document).ready(function(){
    $("#inputfile").change(function(){
        //创建FormData对象
        var data = new FormData();
        //为FormData对象添加数据
        //
        $.each($('#inputfile')[0].files, function(i, file) {
            data.append('upload_file', file);
        });
        $.ajax({
            url:'submit_form_process.php',
            type:'POST',
            data:data,
            cache: false,
            contentType: false,    //不可缺
            processData: false,    //不可缺
            success:function(data){
                data = $(data).html();
                if($("#feedback").children('img').length == 0) $("#feedback").append(data.replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
                else $("#feedback").children('img').eq(0).before(data.replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
            }
        });
    });
});
</script>
</body>
</html>

 

/***************************************  
追加2 
***************************************/

多图上传完结(独立于地点三个版本的文本):

     1、index.html文件

       
功用:点击图片加多文件、增多多个公文、即时上传文件、呈现上传文件报告音讯。

        包涵技能:

              1)$.ajax

              2)$.ajax 发送FormData对象

              3)input multiple=”multiple”上传多少个公文

              四)img onclick=”getElementById(‘inputfile’).click()”
点击图片完毕增进文件操作

              5)input type=”file” 样式:height:0;width:0;z-index:
-一;隐藏增添文件开关(Chrome下使用display:none会导致点击失效)    

         源码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Easy Ajax FormData Upload Multiple Images</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="zh-CN" />
    <script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script>
</head>
<body>
<style>
    #feedback{width:1200px;margin:0 auto;}
    #feedback img{float:left;width:300px;height:300px;}
    #ZjmainstaySignaturePicture,#addpicContainer{float:left;width: 100%;}
    #addpicContainer{margin-left:5px;}
    #ZjmainstaySignaturePicture img{width: 535px;}
    #addpicContainer img{float: left;}
    .loading{display:none;background:url("http://f7-preview.awardspace.com/zjmainstay.co.cc/jQueryExample/jquery_upload_image/files/ui-anim_basic_16x16.gif") no-repeat scroll 0 0 transparent;float: left;padding:8px;margin:18px 0 0 18px;}
</style>
<div id="ZjmainstaySignaturePicture"><a href="http://www.cnblogs.com/Zjmainstay"><img src="http://pic002.cnblogs.com/383557/2012071311244097.jpg"/></a></div>
<div id="addpicContainer">
    <!-- 利用multiple="multiple"属性实现添加多图功能 -->
    <!-- position: absolute;left: 10px;top: 5px;只针对本用例将input隐至图片底下。-->
    <!-- height:0;width:0;z-index: -1;是为了隐藏input,因为Chrome下不能使用display:none,否则无法添加文件 -->
    <!-- onclick="getElementById('inputfile').click()" 点击图片时则点击添加文件按钮 -->
    <img onclick="getElementById('inputfile').click()" style="cursor:pointer;border: 1px solid #AABBCC;" title="点击添加图片" alt="点击添加图片" src="http://f7-preview.awardspace.com/zjmainstay.co.cc/jQueryExample/jquery_upload_image/files/addfile.jpg">
    <input type="file" multiple="multiple" id="inputfile" style="height:0;width:0;z-index: -1; position: absolute;left: 10px;top: 5px;"/>

</div>
<div id="feedback"></div>    <!-- 响应返回数据容器 -->
<script type="text/javascript">
$(document).ready(function(){
    //响应文件添加成功事件
    $("#inputfile").change(function(){
        //创建FormData对象
        var data = new FormData();
        //为FormData对象添加数据
        $.each($('#inputfile')[0].files, function(i, file) {
            data.append('upload_file'+i, file);
        });
        $(".loading").show();    //显示加载图片
        //发送数据
        $.ajax({
            url:'submit_form_process.php',
            type:'POST',
            data:data,
            cache: false,
            contentType: false,        //不可缺参数
            processData: false,        //不可缺参数
            success:function(data){
                data = $(data).html();
                //第一个feedback数据直接append,其他的用before第1个( .eq(0).before() )放至最前面。
                //data.replace(/&lt;/g,'<').replace(/&gt;/g,'>') 转换html标签,否则图片无法显示。
                if($("#feedback").children('img').length == 0) $("#feedback").append(data.replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
                else $("#feedback").children('img').eq(0).before(data.replace(/&lt;/g,'<').replace(/&gt;/g,'>'));
                $(".loading").hide();    //加载成功移除加载图片
            },
            error:function(){
                alert('上传出错');
                $(".loading").hide();    //加载失败移除加载图片
            }
        });
    });
});
</script>
</body>
</html>

  2、submit_form_process.php后台管理公事

        成效:对FormData中富含的$_FILES数组做拍卖并上传图片文件,回传反馈新闻。

        包括技艺:

             1)FormData提交至$_FILES后的协会格局

             2)iconv(‘utf-八’,’gb2312′,$filename) 对文本名打开转码管理

             3)preg_match(“/^\.(jpg|jpeg|gif|png){1}$/i”,
strrchr($gb_filename, ‘.’)) 文件类型过滤

             4)move_uploaded_file()上传文件

             伍)echo
‘<textarea><img….<img….</textarea>’;回传反馈音信。

        源码:

<?php
    header('content-type:text/html charset:utf-8');
    $dir_base = "./files/";     //文件上传根目录
    //没有成功上传文件,报错并退出。
    if(empty($_FILES)) {
        echo "<textarea><img src='{$dir_base}error.jpg'/></textarea>";
        exit(0);
    }

    $output = "<textarea>";
    $index = 0;        //$_FILES 以文件name为数组下标,不适用foreach($_FILES as $index=>$file)
    foreach($_FILES as $file){
        $upload_file_name = 'upload_file' . $index;        //对应index.html FomData中的文件命名
        $filename = $_FILES[$upload_file_name]['name'];
        $gb_filename = iconv('utf-8','gb2312',$filename);    //名字转换成gb2312处理
        //文件不存在才上传
        if(!file_exists($dir_base.$gb_filename)) {
            $isMoved = false;  //默认上传失败
            $MAXIMUM_FILESIZE = 1 * 1024 * 1024;     //文件大小限制    1M = 1 * 1024 * 1024 B;
            $rEFileTypes = "/^\.(jpg|jpeg|gif|png){1}$/i"; 
            if ($_FILES[$upload_file_name]['size'] <= $MAXIMUM_FILESIZE && 
                preg_match($rEFileTypes, strrchr($gb_filename, '.'))) {    
                $isMoved = @move_uploaded_file ( $_FILES[$upload_file_name]['tmp_name'], $dir_base.$gb_filename);        //上传文件
            }
        }else{
            $isMoved = true;    //已存在文件设置为上传成功
        }
        if($isMoved){
            //输出图片文件<img>标签
            //注:在一些系统src可能需要urlencode处理,发现图片无法显示,
            //    请尝试 urlencode($gb_filename) 或 urlencode($filename),不行请查看HTML中显示的src并酌情解决。
            $output .= "<img src='{$dir_base}{$filename}' title='{$filename}' alt='{$filename}'/>";
        }else {
            $output .= "<img src='{$dir_base}error.jpg' title='{$filename}' alt='{$filename}'/>";
        }

        $index++;
    }

    echo $output."</textarea>";

//End_php

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website