php文件上传程序(支持缩略图)(1/2)

 更新时间:2016年11月25日 17:33  点击:2179
 代码如下 复制代码

<!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>上传文件程序</title>
<style type="text/css教程">
*{
 font-size:12px;
 margin:0; padding:0;
}
a:link,a:visited{
 text-decoration:none;
 color: #393
}
a:hover{
 text-decoration:underline;
 color:#0033cc
}
input.text{
 border:1px solid #ccc;height:22px;line-height:22px;padding-left:5px;background:#fff;width:274px;
}
input.button{
 background:#fff url(images/button.png);border:1px solid #9ea9c5;padding:2px 2px 0px 2px;margin-left:4px; margin-right:4px;
}
</style>
<script language=网页特效>
function check()
{
 var strfilename=document.myform.upfile.value;
 if (strfilename=="")
 {
     alert("请选择要上传的文件");
  document.myform.upfile.focus();
     return false;
   }
}
</script>
</head>

<body>
<?php
/***********************
程序:上传文件
功能:上传文件、缩略图、加水印
****************************/
include("common/upfiles.class.php");
$path="../upload/coolsite";    //文件上传路径
$mix="smallimg";     //缩略图路径(在upload下建立)
$mark="markimg";    //加水引的图片存放路径(在upload下建立)
$text = array("www.111cn.net");   //水印内容
$oupload= new upfiles($path,$mix,$mark);   //实例化类文件

if(isset($_post['up'])){
 
 if($_post['urlid']=='1'){ //上传图片 参数urlid 1:上传图片  2:上传其他文件..
  
  $oupload->tofile = true;  //开启则只保存缩略图或者水印图,删除原图
  $photo = $oupload->upload("upfile"); //上传的文件域
  $photourl = $oupload->fileurl."/".$photo;
  $newsmallimg = $oupload->smallimg($photo);  //缩略图功能
  //$newmarkimg = $oupload->watermark($photo,$text); //水印功能

  //echo $newsmallimg;  //输出缩略图路径
  //echo $newmark; //输出水印图路径
  //echo "<img src='".$newsmallimg."' border='0'>"; //输出缩略图
  //echo "<img src='".$newmark."' border='0'>"; //输出水印图
 }else{
  $upfilename = $oupload->upload("upfile"); //上传的文件域
 }
 $strjs = "<script language=javascript> ";
 $strjs .= "parent.document.myform.upfile1.value='".$newsmallimg."' ";
 $strjs .= "parent.document.myform.upfile2.value='".$photourl."' ";
 $strjs .= "</script> ";
 echo $strjs;  //把上次文件路径附在upfile1、upfile2中去
}else{
?>
<form action="upfile.php" method="post" enctype="multipart/form-data" name="myform" onsubmit="return check()">
<input type="file" name="upfile" value="" class="text"><input type="submit" name="up" value="上传" class="button">
<input type="hidden" name="urlid" value="<?php echo $_get['urlid']?>">
</form>
<?php }?>
</body>
</html>

<?
//upfiles.class.php

/*=========================
上传类 upfiles.class.php
===========================*/
class upfiles {
  /*=========================
   //基本参数设置
  ===========================*/
        protected $annexfolder = "upload";  //附件存放点,默认为:upload
  protected $dirtype = 2;   //1:按天存入目录 2:按月存入目录
        protected $smallfolder = "smallimg";   //缩略图存放路径,注:必须是放在 $upload下的子目录,默认为:smallimg
        protected $markfolder = "markimg";    //水印图片存放路径,注:必须是放在 $upload下的子目录,默认为:markimg
        protected $upfiletype = "jpg gif png rar zip";   //上传的类型,默认为:jpg gif png rar zip
        protected $upfilemax = 102400;   //上传大小限制,单位是"kb",默认为:1024kb
        protected $fonttype = "common/equinoxstd.otf";   //水印字体库
        protected $maxwidth = 800;   //图片最大宽度
        protected $maxheight = 600;  //图片最大高度
  
  /*=========================
   //初始化上传类
  ===========================*/
        public function __construct($annexfolder,$smallfolder,$includefolder) {
   
    switch($this->dirtype)
    {
     case 1: $attach_subdir = 'day_'.date('ymd'); break;
     case 2: $attach_subdir = 'month_'.date('ym'); break;
    }
    $attach_dir = $annexfolder.'/'.$attach_subdir;
    $attach_dir_small = $attach_dir.'/'.$smallfolder;
    $attach_dir_mark = $attach_dir.'/'.$includefolder;    
    
    $this->rootfolder = $annexfolder;
                $this->annexfolder = $attach_dir;
                $this->smallfolder = $attach_dir_small;
    $this->markfolder = $attach_dir_mark;
                //$this->fonttype = $includefolder."/nasaliza.ttf";
        }
  public function __get($fileurl){
   $fileurl = $this->annexfolder;
   return $fileurl;
  }
  /*=========================
   //上传文件
  ===========================*/
        public function upload($inputname) {
    //检查文件夹是否存在    
    if(!file_exists($this->annexfolder)){
     if(!file_exists($this->rootfolder)) @mkdir($this->rootfolder);
     if(!file_exists($this->annexfolder)) @mkdir($this->annexfolder);
     if(!file_exists($this->smallfolder)) @mkdir($this->smallfolder);
     if(!file_exists($this->markfolder)) @mkdir($this->markfolder);
    }
    if(!file_exists($this->smallfolder)){
     @mkdir($this->smallfolder);
    }    
    if(!file_exists($this->markfolder)){
     @mkdir($this->markfolder);
    }
        
    $this->uptype = $_files[$inputname]["type"];
    $this->upname = $_files[$inputname]["name"];
    $this->uptmp_name = $_files[$inputname]["tmp_name"];
    $this->ups教程ize = $_files[$inputname]["size"];
    $this->uperror = $_files[$inputname]["error"];

    if($this->uptype){
     switch ($this->uptype)///检查上传的类型
     {    
      case "image/pjpeg":    
       $fileextname = "jpg";    
       break;
      case "image/jpeg":    
       $fileextname = "jpg";    
       break;  
      case "image/gif":    
       $fileextname = "gif";    
       break;    
      case "image/x-png":    
       $fileextname = "png";    
       break;    
      case "application/x-shockwave-flash":    
       $fileextname = "swf";    
       break;    
      case "text/plain":    
       $fileextname = "txt";    
       break;    
      case "application/msword":    
       $fileextname = "doc";    
       break;
      case "application/vnd.ms-excel":    
       $fileextname = "xls";    
       break;
      case "application/x-zip-compressed":    
       $fileextname = "zip";    
       break;
      case "audio/mpeg":
       $fileextname = "mp3";    
       break;
      case "audio/x-ms-wma":
       $fileextname = "wma";    
       break;
      case "application/pdf":
       $fileextname = "pdf";    
       break;
      default: //如果不满足上述类型,那么上传文件被判断为格式不正确!!
       //$fileextname  =strtolower(substr(strrchr(trim($this->upname), "."),1,4));
       //$fileinfo=pathinfo($this->upname);
       //$fileextname=$fileinfo['extension'];
       $fileextname = "err";
      }
     }
    

 

提供两款php 截取字符串函数,他们能自动识别中文哦,如果你是截取文章这个很不错啊,喜欢就进来看看吧。

 代码如下 复制代码

<?php
header ( "content-type:text/html; charset=utf-8" );

    function strcut($string, $length, $dot = '...',$charset='utf-8')
        {

      $strlen = strlen($string);

      if($strlen <= $length) return $string;

      $strcut = '';

      if(strtolower($charset) == 'utf-8')

      {

      $n = $tn = $noc = 0;

      while($n < $strlen)

      {

      $t = ord($string[$n]);

      if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {

      $tn = 1; $n++; $noc++;

      } elseif(194 <= $t && $t <= 223) {

      $tn = 2; $n += 2; $noc += 2;

      } elseif(224 <= $t && $t <= 239) {

      $tn = 3; $n += 3; $noc += 3;

      } elseif(240 <= $t && $t <= 247) {

      $tn = 4; $n += 4; $noc += 4;

      } elseif(248 <= $t && $t <= 251) {

      $tn = 5; $n += 5; $noc += 5;
      } elseif($t == 252 || $t == 253)
      {
        $tn = 6; $n += 6; $noc += 6;
      }
      else
      {

      $n++;

      }
      if($noc >= $length) break;
      }
      if($noc > $length) $n -= $tn;
      $strcut = substr($string, 0, $n);

      }
      else
      {
        $dotlen = strlen($dot);
        $maxi = $length - $dotlen - 1;

        for($i = 0; $i < $maxi; $i++)
        {
          $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
        }
      }
      var_dump($strcut);
      return $strcut;
        }
        echo "jjjkkklll";
        echo strcut("向kk向向向kk向向向kk向向kkklllllllllllmmmmmmmmmmmmmmm向东阳",12)


字符截取函数二

 代码如下 复制代码
function splitstr($str,$len){
    if($len<=0){
  return false;
    }
    else{
  $slen=strlen($str);
  if($len>=$slen)
      return $str;
  else{
      for($i=0;$i<($len-1);$i++){
    if(ord(substr($str,$i,1))>0xa0)
  $i++;
      }
      if($i>=$len)
    return substr($str,0,$len);
elseif(ord(substr($str,$i,1))>0xa0)
    return substr($str,0,$len-1);
      else
    return substr($str,0,$len);
  }
    }
}
 代码如下 复制代码

//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
$page = $_get[page];
if(!function_exists(pageft)){
//定义函数pageft(),三个参数的含义为:
//$totle:信息总数;
//$displaypg:每页显示信息数,这里设置为默认是20;
//$url:分页导航中的链接,除了加入不同的查询信息"page"外的部分都与这个url相同。
//   默认值本该设为本页url(即$_server["request_uri"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页url。
function pageft($totle,$displaypg=20,$url=''){

//定义几个全局变量:
//$page:当前页码;
//$firstcount:(数据库教程)查询的起始项;
//$pagenav:页面导航条代码,函数内部并没有将它输出;
//$_server:读取本页url"$_server["request_uri"]"所必须。
global $page,$firstcount,$pagenav,$_server;

//为使函数外部可以访问这里的"$displaypg",将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
$globals["displaypg"]=$displaypg;

if(!$page) $page=1;

//如果$url使用默认,即空值,则赋值为本页url:
if(!$url){ $url=$_server["request_uri"];}

//url分析:
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //单独取出url的查询字串
if($url_query){
//因为url中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
//这里用到了正则表达式,请参考"php中的正规表达式"
$url_query=preg_replace("/(^|&)page=$page/","",$url_query);

//将处理后的url的查询字串替换原来的url的查询字串:
$url=str_replace($parse_url["query"],$url_query,$url);

//在url后加page查询信息,但待赋值:
if($url_query) $url.="&page"; else $url.="page";
}else {
$url.="?page";
}

//页码计算:
$lastpg=ceil($totle/$displaypg); //最后页,也是总页数
$page=min($lastpg,$page);
$prepg=$page-1; //上一页
$nextpg=($page==$lastpg ? 0 : $page+1); //下一页
$firstcount=($page-1)*$displaypg;

//开始分页导航条代码:
$pagenav="显示第 <b>".($totle?($firstcount+1):0)."</b>-<b>".min($firstcount+$displaypg,$totle)."</b> 条记录,共 $totle 条记录";

//如果只有一页则跳出函数:
if($lastpg<=1) return false;

$pagenav.=" <a href='$url=1'>首页</a> ";
if($prepg) $pagenav.=" <a href='$url=$prepg'>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href='$url=$nextpg'>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href='$url=$lastpg'>尾页</a> ";

//下拉跳转列表,循环列出所有页码:
$pagenav.=" 到第 <select name='topage' size='1' onchange='window.location="$url="+this.value'> ";
for($i=1;$i<=$lastpg;$i++){
if($i==$page) $pagenav.="<option value='$i' selected>$i</option> ";
else $pagenav.="<option value='$i'>$i</option> ";
}
$pagenav.="</select> 页,共 $lastpg 页";
}
}

 代码如下 复制代码

<?php
header("content-type:application/vnd.ms-excel; charset=gbk");
    header("content-disposition:attachment;filename=test_data.xls");


$link=mysql教程_connect('localhost','root','hhhkkk');
if($link){

    mysql_select_db('dataui',$link);
    mysql_query("set names 'gbk'");
    echo "数据库教程连接已经成功!";
}else{
     echo "数据库连接失败!";
}

echo "项目名称"." ";
echo "项目详情"." ";
$sql="select * from php168_item_content where fid='11'";
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query)){
          echo $rs[title]." ";
     $sql2="select * from php168_item_content_1 where id='$rs[id]'";
   $query2=mysql_query($sql2);
   while($rs2=mysql_fetch_array($query2)){
   echo $rs2[content]." ";
   echo " ";
     
   }
                       
}


?>

导出excel时,如果某列导出的是身份证号的话,打开excel文件以后会发现,身份证号自动采用科学计数法,无论如何修改该列属性,都无法实现自己的要求。网上有人说,先把该列属性改为文本以后,再输入就没有问题,实际操作excel确实如此,但是,php程序导出就无法做到了

 

 代码如下 复制代码

<?php
        // 实验资料,实际作业中,这里应该是从数据库取得资料
        $emps教程[0]['id'] = '00001';
        $emps[0]['name'] = 'abc';
        $emps[0]['sexual'] = '男';
        $emps[0]['age'] = 28;

        $emps[1]['id'] = '00002';
        $emps[1]['name'] = 'bbc';
        $emps[1]['sexual'] = '男';
        $emps[1]['age'] = 23;

        $emps[2]['id'] = '00003';
        $emps[2]['name'] = 'cba';
        $emps[2]['sexual'] = '女';
        $emps[2]['age'] = 20;
     
        ini_set('include_path', '/data/website/htdocs/includes');
        require_once('smarty.php');
        $smarty = new smarty();

        $smarty->assign('emps', $emps);

        // 输出文件头,表明是要输出 excel 文件
        header("content-type: application/vnd.ms-excel");
        header("content-disposition: attachment; filename=test.xls");
        $smarty->display('excel-xml.tpl');
?>

php判断文件是否存在其实很简单,只需要一个函数即可:file_exists(文件路径); 用此函数一般用来判断文件是否存在,然后操作,常用的有删除文件:unlink(文件路径);
 代码如下 复制代码
if(file_exists("data.txt"))
 {
  print("这个文件存在");  //文件存在
  print(fileinode("data.txt"));
 }
 else
 {
  print("文件不存在");  //文件不存在
 }


方法二

 代码如下 复制代码
<?php session_start();
if($submit=="查找"){
$file_up=$_post[files];
if(file_exists($file_up)){
echo "文件已经存在!!";
}else{echo "该文件不存在!!";}
}
?>


方法三

 

 代码如下 复制代码
<?php
$filename = './d243375_0.png';
$filename = realpath($filename);
if (!file_exists($filename)) {
die("图片不存在~!");
}
$size = getimagesize ($filename);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
if("image/png" != $size['mime'] || $file_extension != "png"){
die("这不是一张完整的png图片");
}
$img = @imagecreatefrompng ($filename);
if($img){
ob_start("output_handler");
imagepng($img);
ob_end_flush();
}else{
die("不能正确的创建png图形,请检查png图形是否完好~");
}
function output_handler($img) {
header('content-type: image/png');
header('content-length:'.strlen($img));
return $img;
}
?>
[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • Php文件上传类class.upload.php用法示例

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

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • jQuery实现简单的文件上传进度条效果

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

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
  • 微信小程序手势操作之单触摸点与多触摸点

    这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
  • 微信小程序(应用号)开发新闻客户端实例

    这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
  • 手把手教你uniapp和小程序分包(图文)

    本文主要介绍了手把手教你uniapp和小程序分包,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-02