php 保存flash在线拍照发送过照片

 更新时间:2016年11月25日 16:03  点击:1530
php 保存flash在线拍照发送过照片

<?php
//保存报像头上传的图片.

define('SD_ROOT', dirname(__FILE__).'/');
@header("Expires: 0");
@header("Cache-Control: private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");


$pic_id = time();

//生成图片存放路径
$new_avatar_path = 'avatar_origin/'.$pic_id.'.jpg';

//将POST过来的二进制数据直接写入图片文件.
$len = file_put_contents(SD_ROOT.'./'.$new_avatar_path,file_get_contents("php://input"));

//原始图片比较大,压缩一下. 效果还是很明显的, 使用80%的压缩率肉眼基本没有什么区别
$avtar_img = imagecreatefromjpeg(SD_ROOT.'./'.$new_avatar_path);
imagejpeg($avtar_img,SD_ROOT.'./'.$new_avatar_path,80);
//nix系统下有必要时可以使用 chmod($filename,$permissions);

log_result('图片大小: '.$len);


//输出新保存的图片位置, 测试时注意改一下域名路径, 后面的statusText是成功提示信息.
//status 为1 是成功上传,否则为失败.
$d = new pic_data();
$d->data->photoId = $pic_id;
//$d->data->urls[0] = 'http://sns.com/avatar_test/'.$new_avatar_path;
$d->data->urls[0] = '/avatar_test/'.$new_avatar_path;
$d->status = 1;
$d->statusText = '上传成功!';

$msg = json_encode($d);

echo $msg;

log_result($msg);
function  log_result($word) {
 @$fp = fopen("log.txt","a"); 
 @flock($fp, LOCK_EX) ;
 @fwrite($fp,$word.":执行日期:".strftime("%Y%m%d%H%I%S",time())."rn");
 @flock($fp, LOCK_UN);
 @fclose($fp);
}
class pic_data
{
  public $data;
  public $status;
  public $statusText;
 public function __construct()
 {
  $this->data->urls = array();
 }
}

?>

很多时间我们要把数据保存到其它地方,如保存到xml或又想把xml数据保存到mysql数据库,下面我们就提供了一款php mysql与xml数据相互转换程序哦。

先来看看调用方法


<?php
$xml = new MySQL2XML(array('host'=>'localhost', 'username'=>'root', 'password'=>'', 'database'=>'mysql'));
$xml->setTables(array('wp_term_relationships','wp_terms'));//设置备份的表
$xml->setSaveFolder('datas/');//保存备份文件的文件夹
$xml->toXML();//备份开始
?>

下面是这个互相转换程序的类型文件


<?php
class MySQL2XML {
        protected $conn;
        protected $result;
        protected $tables;
        protected $saveFolder = 'datas/';
       
        public function __construct($config = NULL) {
                if($config !== NULL && is_array($config)) {
                        $this->connect($config);
                }
        }
       
        public function connect($config) {
                $this->conn = mysql_connect($config['host'], $config['username'], $config['password']);
                if($this->conn) {
                        mysql_select_db($config['database']);
                        return true;
                }
                return false;
        }
       
        public function setSaveFolder($folder) {
                if(is_dir($folder)) {
                        $this->saveFolder = rtrim(str_replace("\", "/", $folder),'/');
                        return true;
                }
                return false;
        }
       
        public function setTables($tables) {
                if(is_array($tables)) {
                        $this->tables = $tables;
                        return true;
                }
                return false;
        }
       
        public function query($query) {
                if(!isset($query) || trim($query) == '') return false;
                $this->result = mysql_query($query);
                if($this->result) return true;
                return false;
        }
       
        public function toXML() {
                if(!isset($this->tables)) return false;
                foreach($this->tables as $table) {
                        $file = $this->saveFolder.$table.'.xml';
                        $fp = @fopen($file, 'w');
                        if(!$fp) exit('Can not write file');
                        fwrite($fp, $this->tableToXML($table));
                        fclose($fp);
                        unset($fp);
                }
                return true;
        }
       
        public function tableToXML($table) {
                header("content-type:text/xml;charset=utf-8");
                $xml = "<?xml version="1.0" encoding="utf-8" ?>n<datas>n";
                $fields = $this->getFields($table);
                $datas = $this->getDatas($table);
                $cdata = array();
                foreach($datas as $data) {
                        foreach($data as $key => $value)
                                $cdata[$key][] = $value;
                }
                foreach($fields as $element) {
                        $xml .= "t<fields name="{$element['Field']}" type="{$element['Type']}" null="{$element['Null']}" key="{$element['Key']}" default="{$element['Default']}" extra="{$element['Extra']}">n";
                        foreach($cdata[$element['Field']] as $value) {
                                $xml .= "tt<data>{$value}</data>n";
                        }
                        $xml .= "t</fields>n";
                }
                $xml .= '</datas>';
                return $xml;
        }
       
        protected function getFields($table) {
                $query = "SHOW FIELDS FROM {$table}";
                $this->query($query);
                return $this->fetchAll();
        }
       
        protected function getDatas($table) {
                $query = "SELECT * FROM {$table}";
                $this->query($query);
                return $this->fetchAll();
        }
       
        protected function fetch() {
                if(is_resource($this->result)) {
                        return mysql_fetch_assoc($this->result);
                }
                return false;
        }
       
        protected function fetchAll() {
                if(is_resource($this->result)) {
                        $return = array();
                        $row = NULL;
                        while($row = mysql_fetch_assoc($this->result)) {
                                $return[] = $row;
                        }
                        return $return;
                }
                return false;
        }
}
?>

在二年前我就接触过了wap网站的制作了,今天 3g出来了现在我们来看看关于用php写wap站点时要注意的一些小细节吧。

(1) 使用“<?”和“?>”来包含PHP编写的WML程序行,格式为:

<?

……(程序行);

?>

(2) 其他WML标签和语句行一律使用PHP的echo关键字来声明,每个WML行的后面加上换行符“n”(根据需要,也可加多个)。其基本格式为:

echo("……(WML标签和语句行)n");

例如,下面的语句就是PHP编写WML语句行的典型例子:

echo("<?xml version="1.0"?>n");

而且,echo语句中的“WML标签和语句行”可以连写,以节省程序代码行。例如,下面的一行语句就连写了WML的3行标签语句:

echo ("<wml> <card> <p>");

3) 文件最后保存时采用的扩展名为“.php”或“.php3”,而不是“.wml”等扩展名。

4) 程序行语句均以分号( ; )结尾,这是与ASP编写WML程序不同的地方。

5) 声明脚本语言。这是对PHP编程的继承,向编译器声明当前程序采用的脚本语言为PHP,格式为:

<script language="PHP">

不过这一句可以省略,因为编译器能够自动识别PHP的脚本程序。

6) 使用PHP的header关键字来声明WML的文件类型,基本格式为:

header("Content-type: text/vnd.wap.wml");

上述格式是专为WAP浏览器识别而采取的书写格式。如果开发中用户想使用普通的浏览器,如IE浏览器来测试程序效果,则可在该语句的前面加上双斜线(//),格式为:

// header("Content-type: text/vnd.wap.wml");

这样,基于PC的浏览器将忽略程序中无法理解的WML标签,这时当前的程序实际上成为了HTML页面。当想在WAP设备或者模拟器上测试的时候,只需要去掉“//”,当前页面就会自动变成WML页面。

很多朋友都是用js来实现级联菜单了,那样有一个不好就是更新可能要修改源码,现在提供的这款ajax+php是一个实时的,不好之处在于耗费服务器资源了。

main.php
<script language="javascript" src="initajax.js"></script><!--InitAjax()-->
<script>
<!--

function getoption(select1,target)
{
    if(select1.value!=0){
        //select1是提交数据的来源的select菜单名
        var url = "getoption.php?pid="+select1.value;//取得xml的url
        //alert(url);
        var ajax = InitAjax();
        var i = 0;
        ajax.open("GET", url, true);
        ajax.onreadystatechange = function() {
            //如果执行是状态正常,那么就把返回的内容赋值给指定的地方
            if (ajax.readyState == 4 && ajax.status == 200) {
                var obj = ajax.responseXML;
                var properties = obj.getElementsByTagName("property");
                var name,value;
                target.options.length = 1;
                for (var i=0,x=1;i<properties.length;i++,x++) {
                    name = properties[i].getElementsByTagName("name")[0].firstChild.nodeValue;
                    value = properties[i].getElementsByTagName("value")[0].firstChild.nodeValue;
                    target.options[x] = new Option();
                    target.options[x].text = name;
                    target.options[x].value = value;
                }
            }
        }
        ajax.send(null);
    }
}


<form method="post" name="form" action="index.php">
<select name="level1" onchange="getoption(document.form.level1,document.form.level2);"/>
<option selected="ture" value="0">===选择===</option>
<?
if ($nrows>0){
    for ($i=0;$i<$nrows;$i++){
        echo "<option value="{$results[ID][$i]}">{$results[NAME][$i]}</option>";
    }
}
?>
</select>
<select name="level2" onchange="getoption(document.form.level2,document.form.level3);">
<option selected="ture" value="0">===选择===</option>
</select>

iniajax.js:
function InitAjax()
{
    var ajax=false;
    try {
        ajax = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            ajax = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            ajax = false;
        }
    }
    if (!ajax && typeof XMLHttpRequest!='undefined') {
        ajax = new XMLHttpRequest();
    }
    return ajax;
}

getoption.php:
<?php
if($pid=$_GET["pid"])
{
    header("Content-type: text/xml;charset=GB2312");
    echo "<?xml version="1.0" encoding="GB2312"?>";
    include("./oracle.inc");
    $sql="select * from AJAXTEST where PARENTID = $pid";
    //echo $sql;
    $stmt=ociparse($handle,$sql);
    ociexecute($stmt);
    ocicommit($handle);
    ocilogoff();
    $nrows=ocifetchstatement($stmt,$results);
    echo "<properties>";
    //echo "<row>{$nrows}</row>";
    for ($i=0;$i<$nrows;$i++){
    echo "<property>";
    echo "<value>{$results[ID][$i]}</value>";
    echo "<name>{$results[NAME][$i]}</name>";
    echo "</property>";
    }
    echo "</properties>";
}
?>

php 图片上传源码下载[gif,jpg]

<!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">
<!--
body,td,th {
 font-size: 12px;
 color: #FFFFFF;
}
body {
 background-color: #999;
 margin-left: 0px;
 margin-top: 0px;
}
a:link {
 color: #FFFFFF;
}
a:visited {
 color: #FFFFFF;
}
a:active {
 color: #FFFFFF;
}
-->
</style></head>

<body>
<?php
    $dest_folder   =  "/picture/";
 if(!file_exists($dest_folder)){
        mkdir($dest_folder);
 }
 foreach ($_FILES["pictures"]["error"] as $key => $error) {
     if ($error == UPLOAD_ERR_OK) {
  $houzhui=substr($_FILES["pictures"]["name"][$key],-4);
  if ($_FILES["pictures"]["size"][$key]<=1024*100) //100K
  {
  if ($houzhui==".jpg" or $houzhui==".gif")
  {
         $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
         $name    = date("ymdhs")."_".mt_rand(10000,99999).$houzhui;
         $uploadfile = $dest_folder.$name;
         move_uploaded_file($tmp_name, $uploadfile);
  echo "<script>
  parent.img.value="".$uploadfile."";
  parent.sm1.disabled=false;
  </script>
  <div align=center>贴图上传成功。[<a href=upload.htm onclick="parent.sm1.disabled=true;">重新上传</a>]</div>";   
}
else
echo "<script>alert('对不起,您上传文件格式不对!请上传.gif或.jpg格式的图片文件!');history.go(-1);</script>";    
}
else
echo "<script>alert('对不起,您上传的文件太大了!请上传文件大小小于100k的图片文件!');history.go(-1);</script>"; 
  }
 }
?>
</body>
</html>

[!--infotagslink--]

相关文章

  • 美图秀秀给照片天空加蓝天白云教程一览

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
  • NodeJS实现阿里大鱼短信通知发送

    本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20
  • PHP测试成功的邮件发送案例

    mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<&#63;php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
  • c# 实现发送邮件的功能

    这篇文章主要介绍了c# 如何实现发送邮件的功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<&#63;php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
  • python实现企业微信定时发送文本消息的实例代码

    这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-25
  • PHP测试成功的邮件发送案例

    mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
  • photoshop怎么对照片祛痘磨皮

    photoshop软件是现在很多人都会使用到的,很多人会使用ps软件处理照片。那么photoshop怎么对照片祛痘磨皮呢?不知道的下面我们一起来看看。 原图&#8195;&#8195;photo...2017-07-06
  • node.js 基于 STMP 协议和 EWS 协议发送邮件

    这篇文章主要介绍了node.js 基于 STMP 协议和 EWS 协议发送邮件的示例,帮助大家更好的理解和使用node.js,感兴趣的朋友可以了解下...2021-02-15
  • 基于Python获取照片的GPS位置信息

    这篇文章主要介绍了基于Python获取照片的GPS位置信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-22
  • php中利用curl smtp发送邮件实例

    本文章来介绍人一下关于与我们不同的发送邮件的方法我们来利用php curl stmp来实现邮件的发送程序。 $ telnet 邮箱SMTP服务地址 25 Trying 邮箱服务IP地址......2016-11-25
  • PS给绿色树林人物照片添加金色逆光效果

    PS给绿色树林人物照片添加金色逆光效果文章中,将会教大家如何添加逆光效果,想要学习该技能的同学请看下文介绍。 素材图片有点逆光,只是背景比较杂乱,效果不是很好...2016-12-15
  • Python基于httpx模块实现发送请求

    这篇文章主要介绍了Python基于httpx模块实现发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-08
  • 微信小程序 获取相册照片实例详解

    这篇文章主要介绍了微信小程序 获取相册照片实例详解的相关资料,需要的朋友可以参考下...2016-11-22
  • php定时发送邮件

    <?php // 请求 PHPmailer类 文件 require_once("class.phpmailer.php"); //发送Email函数 function smtp_mail ( $sendto_email, $subject, $body, $extra_hd...2016-11-25
  • 关于webview适配H5上传照片或者视频文件的方法

    这篇文章主要介绍了关于webview适配H5上传照片或者视频文件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • 安卓手机上误删的照片该如何找回?照片被误删找回的三个方法

    有时我们会不小心将手机中的照片给删除掉,当再次查看该照片时发现为时已晚。那么安卓手机上误删的照片该如何找回?下面小编就为大家介绍照片被误删找回的三个方法,真的很实用,一起来学习吧...2017-07-06
  • Python识别处理照片中的条形码

    这篇文章主要介绍了Python识别处理照片中的条形码,帮助大家更好的利用python处理图片,提高办公效率,感兴趣的朋友可以了解下...2020-11-16
  • php天翼开放平台短信发送接口实现

    临时性需求,研究了一下天翼开发平台的东西,用来发送验证码还是不错的,但是每日限额不多,所以很鸡肋,但是保证100%到达 买的话还是蛮贵的,代码没有做任何优化处理,只是测试是...2016-11-25