二款php ajax文件上传代码(1/4)

 更新时间:2016年11月25日 16:27  点击:1778
这两款ajax文件上传代码其实都是利用了js的iframe或ajax post来实现的下面来看看代码吧。
 代码如下 复制代码

<html>
<body>
<h1>ajax file upload sample</h1><br/><input id="uplaod" name="btn_send" type="button" value="上传测试"/>
<div id=result></div>
<pre class=js name="code">
<script language=网页特效>
// 上传函数
function btn_send.onclick() {
data = ""
spliter = "-------7d8d733180846"
datadata = data + spliter + " "
datadata = data + "content-disposition: form-data; name="photofile"; filename="c:\a.txt" "
// datadata = data + "content-type: image/pjpeg" + vbcrlf
datadata = data + "content-type: text/plain" + " " + " "
text = "my name is wilson lin."
postlength = text.length + data.length + 2 + spliter.length + 4
package = data + text + " " + spliter + "-- "

alert(package)
// 把xml文档发送到web服务器
var xmlhttp = new activexobject("microsoft.xmlhttp");
xmlhttp.open("post","./upload.php",false);
xmlhttp.setrequestheader("content-type", "multipart/form-data; boundary=-----7d8d733180846");
xmlhttp.setrequestheader("content-length", postlength);
xmlhttp.send(package);
// 显示服务器返回的信息
result.innerhtml=xmlhttp.responsetext;
}
</script>
</pre>
</body>
</html>


<html>
<script language="javascript">
<!--
   var xmlhttp;
  function createxmlhttprequest() {
   if (window.activexobject) {
    xmlhttp = new activexobject("microsoft.xmlhttp");
   }
   else if (window.xmlhttprequest) {
    xmlhttp = new xmlhttprequest();
   }
  }
  function uploade(e){
   var fileadd
   fileadd = e;
   
    createxmlhttprequest();
    xmlhttp.onreadystatechange = handlestatechange;
    var url = "pic_upload.asp教程?add="+fileadd+"&timestamp="+new date().gettime();
    xmlhttp.open("get",url,true);
    xmlhttp.send(null);
  
  }
  function handlestatechange() {
   document.getelementbyid("content").innerhtml = "这里写进度条";
   if (xmlhttp.readystate == 4) {
    if (xmlhttp.status == 200) {
     
     document.getelementbyid("content").innerhtml = xmlhttp.responsetext;
     
    }
    else{
     //alert(xmlhttp.status);
                                                                                  alert('错误,请联系管理员!');
     
    }
   }
  }
//-->
</script>
 <body>
<input type=file name="mefile" id="fileadd" onchange="alert(document.getelementbyid('fileadd').value);">
<input type="submit" value="上传" onclick="uploade(document.getelementbyid('fileadd').value);">
<div id="content"></div>
 </body>
</html>

 

这是昨天在应用开发时用到的一款ajax图片上传功能了,方法很简单的就是把文件利用js给iframe来直接上专,如果上传文件成功返回1,再用js判断是否上传成功如果是就输出图片并显示预览效果。

 代码如下 复制代码

<!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>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>ajax文件上传</title>
<style type="text/css教程">
#f1_upload_process { display:none;}
</style>
<script language="网页特效" type="text/javascript">
<!--

function $(id)
{
 return document.getelementbyid(id);
}

function startupload(){
      if( $('myfile').value =='' )
   {
    alert('请选择要上传图片!');
    return false;
   }
   var array = $('myfile').value.split('.');
   var ext = array[1].tolowercase();  
   if( ext =="gif" || ext =="jpg" || ext =="png" )
   {   
    $('f1_upload_process').style.display = 'block';
    $('f1_upload_form').style.display = 'block';
    return true;
   }
   else
   {
   alert('只允许上传gif jpg png格式图像文件!');
   return false; 
   }
}

function stopupload(success,pic){
      var result = '';
      if (success ==1 ){
   result ='<img src='+pic+' />';
   $('logo').value=pic;
      }
      else {
         result = '<span class="emsg">logo图片上传失败,请联系开发人员!</span><br/><br/>';
      }
      $('f1_upload_process').style.display = 'none';
      $('f1_upload_form').innerhtml = result + '<br /><label><input name="myfile" type="file" size="30" /></label><label><input type="submit" name="submitbtn" class="sbtn" value="上传图片" /></label>';
      $('f1_upload_form').style.display = 'block';    
      return true;  
}

//-->
</script>
</head>

<body>
<form action="upload.php教程" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="javascript:return startupload();" >
     <span id="f1_upload_process"><img src="loader.gif" /></span>
     <span id="f1_upload_form" align="center">
       <input name="myfile" type="file" id="myfile" size="30" />  
       <input type="submit" name="submitbtn" class="sbtn" value="上传图片" />
       
     </span>
    
     <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
 (可上传 gif,jpg,png)
</form>
</body>
</html>

upload.php

 代码如下 复制代码

<?php
   $destination_path = '../../upfile/jianjulogo/';//getcwd().directory_separator;

   $result = 0;
  
   $target_path = $destination_path . basename( $_files['myfile']['name']);

   if(@move_uploaded_file($_files['myfile']['tmp_name'], $target_path)) {
      $result = 1;
   }
   echo $target_path;
   sleep(1);


?>
<script language="javascript" type="text/javascript">window.top.window.stopupload(<?php echo $result; ?>,'<?=$target_path?>');</script>

 代码如下 复制代码
<?php教程
 
class mycache
{
  private $cache;
  function  __construct()
  {
    $this->cache = new memcache();
    // you can replace localhost by memcached server ip addr and port no.
    $this->cache->connect('localhost', 10987);
  }
 
  function get_data($key)
  {
    $data = $this->cache->get($key);
    if($data != null)
      return $data;
    else
    {
      if($this->cache->getresultcode() == memcached::res_notfound)
      {
        //do the databse query here and fetch data
        $this->cache->set($key,$data_returned_from_database);
      }
      else
      {
        error_log('no data for key '.$key);
      }
    }
  }
}
 
$cache = mycache();
$cache->get_data('foo');
 
?>


memcache 在什么情况下被使用,什么情况下不要使用?
你在何时应该使用 memcache,又要在何时避免使用它?现在你已经知道了,memcahced 是被设计为减轻数据库教程端压力的。但是你最好能制定一个良好的策略,来想办法让 memcached 来尽可能的缓存那些最影响性能的查询。你可以试着为应用中的所有查询做一些执行时间日志,可以帮助你来分析哪些内容是要重点被缓存的。

现在假设你正在运营一个电子商务网站。 你可以在 memcached 中缓存产品的简介、运送信息,或者其它一些需要复杂查询的数据,等等。当一个产品页被加载的时候,上面提到的数据将会跳过数据库查询,直接从缓存中取得。缓存可以大大的改变你的网站整体性能表现,你只需要记得在后台更新产品的时候,把这些缓存一并更新就行了。

还有一些情况下,缓存数据并不是一个好主意,比如在一个数据被频繁更新的时候,每一次数据的更新,我们都需要去同时更新缓存,缓存的命中率不高,会导致一些额外的性能牺牲。这种情况下,或许直接查数据库会更好一些。

memcached 的安全性
如果你了解了 memcached 的工作流程, 你可能已经注意到了,在访问缓存的过程中,没有任何权限控制的相关流程。如果你的数据不是非常重要的,你大可不必担心这方面的安全问题。如果你需要的话,以下几点可以协助你更完全的使用它:

使用唯一的 key:因为在 memcached 中的数据是以一个大的数组形式存在的,所以你应该使用唯一的 key。访问你的数据的唯一办法就是通过你保存数据时的 key,除此之外再没有其它可查询的办法。
保证你的 memcached 器安全: 因为 memcached 本身并没有身份验证机制,所以对 memcached 的服务器查询,都应该通过防火墙进行。你可以在防火墙上设定规则,哪些服务器是允许被访问的,哪些是不允许被访问的。
加密你的数据: 你可以将数据和 key 通过加密的方式保存在 memcached 中。 这需要花费一些额外的 cpu 时间,但是为了你的数据安全,在情况允许的情况下,这个方法值得你去尝试。

css教程代码

@charset "utf-8";
/* css document */

#getplatform {
position: absolute;
visibility: hidden;
width: 180px !important;
border: 1px solid #77c608;
background: #fcfcfc;
cursor: pointer;
color: #ff7a23;
list-style-type: none;
z-index: 9999;
}
.hint {
width: 180px;
padding-left: 6px;
font-size: 12px;
color: #656565;
background: #fff;
border-bottom: 1px dashed #c1c1c1;
}
.mout {
width: 180px;
padding-left: 6px;
border-top: 1px dashed #fff;
border-bottom: 1px solid #fff;
font-size: 12px;
line-height: 160%;
color: #000;
background: #fff;
}
.mover {
width: 180px;
padding-left: 6px;
border-top: #fb6e04 1px solid;
border-bottom: #fb6e04 1px solid;
line-height: 160%;
font-size: 12px;
color: #457007;
background: #fff4d2;
cursor: hand;
}
.selected {
width: 180px;
padding-left: 6px;
border-top: #f2f8ff 1px solid;
border-bottom: #f2f8ff 1px solid;
line-height: 160%;
font-size: 12px;
color: #ffffff;
background: #ff9900;
}
.tdleft {
padding-left: 6px;
font-size: 12px;
}
.tdright {
padding-right: 4px;
}

调用方法

<link href="http://www.111cn.net/css_new/citys.css" rel="stylesheet" type="text/css"/><script language="网页特效" src="/js/jquery.js" type="text/javascript"></script><script language="javascript" src="http://www.111cn.net/js/allcity.js" type="text/javascript"></script><input name="city" type="text" id="city" value="中文/拼音" onfocus=showsearch(this) onblur=showsearch(this,1) onclick="suggest.display(this,'cityname',event)" onkeyup="suggest.display(this,'cityname',event)" />

浏览器缓存,就完全不是那么回事了,缓存内容存储在浏览器本地,而内容却由web服务器生成,任何一方都不可能独立完成这一系统过程,所以它们之间必须有一种沟通机制,这就是http中的“缓存协商”。
我们先来看一个通常的http请求:
host         www.111cn.net
user-agent         mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.9) gecko/20100824 firefox/3.6.9        firephp教程/0.4
accept         text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language         zh-cn,zh;q=0.5
accept-encoding         gzip,deflate
accept-charset         gb2312,utf-8;q=0.7,*;q=0.7
keep-alive         115
connection         keep-alive
上面就是一个普通的http请求,为了实现在浏览器缓存控制,我们需要了解http响应头中的四种标记:
last-modified:最后修改gmt时间
etag:通过一串编码来标记内容是否更改过
expires:指定一个过期gmt时间
cache-control:mag-age=相对于浏览器本地的过期秒数(可避免服务器时间不正确的情况下同样起作用)

http返回的状态代码:
200——请求成功
304——客户端已经执行了get,但文件未变化
400——错误请求,如语法错误
500——服务器产生内部错误
501——服务器不支持请求的函数

以下代码使用了以上四种方法来控制浏览器内容缓存一个小时,如果在一小时之内则立即返回304状态码通知浏览器使用本地的内容。这将节省服务器程序执行时间,网络传输时间(仅返回一个头文件)
$modified_time = $_server['http_if_modified_since'];
if (strtotime($modified_time) + 3600 > time()) {
header("http/1.1 304");
exit(0);
}
header("last-modified:" . gmdate("d, d m y h:i:s") . "gmt");
header("expires:" . gmdate("d, d m y h:i:s", time() + 3600) . "gmt");
header("cache-control: max-age=3600");

特别需要说明一下的是:expires需要服务器商支持expires模块默认情况下是不会开启,使用以下命令即可:
a2enmod expires         //启用expires模块
/etc/init.d/apache2 restart        //重启apache服务
我们还可以通过修改http.conf配置中:
expiresactive        on expiresbytype image/gif “access plus 1 month” expiresbytype text/css教程 “now plus 2 day” expiresdefault         “now plus 1 day”
以上是针对静态内容的mime类型来设置过期时间,因为我们无法给静态文件直接指定一个绝对到期时间,所以采用”access plus”式的语法,由web服务器在该内容被请求的时候动态计算一个绝对到期时间,作为expires标记的内容。
值得一提的是,对于常见的静态文件格式,即便是web服务器返回http响应头中没有expires标记,浏览器也会根据一些其它线索猜测一个过期时间,比如ie在某种缓存模式下,对于gif图片设置为永不过期,除非我们配置expires为马上过期,也就是将过期时间设置为当前时间或者0。

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • jQuery实现简单的文件上传进度条效果

    本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24