php模拟post上传图片实现代码


Posted in PHP onJune 24, 2016

本文实例为大家分享了php模拟post上传图片的具体代码,供大家参考,具体内容如下

服务器和客户端都是php语言
但是客户端不是网页,不在浏览器上运行,而是在命令行运行
现在要做的是在客户端访问服务器,读取服务器上的图片,在客户端把图片的宽度变为100,然后再上传到服务器。
前两步都已完成:
 1、读取服务器上的图片,转为二进制传到客户端,客户端用fopen、fwrite重新生成图片存放到客户端org/resouse目录下
 2、再把org/resouse中的图片处理为宽度100存放到客户端org/w100目录下
 3、最后一步要怎样重新把它上传到服务器呢? 

前两步已经完成,可以忽略
客户端org/w100/目录下有图片:5k0ach.jpg,要怎样把这张图片上传到服务器?
 注意:客户端不是网页,没有表单之类的界面,是在命令行运行的
客户端gptest.php的部分代码(省略登陆部分的,假设登陆成功,直接为psn_id赋值): 

<?php 
$psn_id = "1fbahh"; 
$url = SERVER_URL . '/get_imginfo.php'; 
//SERVER_URL为我自己定义的常量,其值为:http://localhost:8080/phpClientSer 
$ans = postData_json($url, "psn_id=$psn_id");//postData_json()和postData()在check.php 
 
print_r($ans); 
 
if ($ans['count'] > 0) { 
 if (!file_exists("org")) { 
  mkdir("org"); 
  mkdir("org/resouse/"); //从服务器读取过来的原图片存放路径 
  mkdir("org/w100/"); //把上目录中临时存放的图片处理为宽度100后存放的路径 
  mkdir("org/temp/"); //出来gif图片是的临时mul 
 } 
 foreach ($ans['pdt_id'] as $k => $pdt_id) { 
  $img = "org/resouse/" . $pdt_id . $ans['img_style'][$k]; 
 
  $url = SERVER_URL . '/get_stream.php';//访问服务器的路径 
  $postString = $ans['img_url'][$k]; //传递的参数[服务器上图片的路径] 
  $stream = postData($url, "img_url=" . $ans['img_url'][$k]);//从服务器读取的图片内容 
  $file = fopen($img, "w+"); //打开文件准备写入 
  fwrite($file, $stream); //写入 
  fclose($file); //关闭 
 
  $image_resize = new image_resize(); 
  $image_resize->act($img, $pdt_id);//处理图片 
 
  $img_u = "org/w100/" . $pdt_id . $ans['img_style'][$k];//处理后图片的存放路径 
   
  //下面的代码是把处理过的图片转为二进制传到服务器,问题就出在这段代码 
  $stm = file_get_contents($img_u); 
  $url = SERVER_URL . '/create_img.php'; 
  $postString = "pdt_id=$pdt_id&img_style=" . $ans['img_style'][$k] . "&img_stm=" . $stm; 
  $move = postData($url, $postString); 
  echo "result---------" . $move . "\r\n"; 
 } 
} 
?>

check.php部分代码 

function postData($remote_server, $post_string) { 
 $context = array( 
  'http' => array( 
   'method' => 'POST', 
   'header' => 'Content-type: application/x-www-form-urlencoded' . 
   '\r\n' . 'User-Agent : Jimmy\'s POST Example beta' . 
   '\r\n' . 'Content-length:' . strlen($post_string) + 8, 
   'content' => $post_string) 
 ); 
 $stream_context = stream_context_create($context); 
 $data = file_get_contents($remote_server, false, $stream_context); 
 return $data; 
} 
 
function postData_json($remote_server, $post_string) { 
 $context = array( 
  'http' => array( 
   'method' => 'POST', 
   'header' => 'Content-type: application/x-www-form-urlencoded' . 
   '\r\n' . 'User-Agent : Jimmy\'s POST Example beta' . 
   '\r\n' . 'Content-length:' . strlen($post_string) + 8, 
   'content' => $post_string) 
 ); 
 $stream_context = stream_context_create($context); 
 $data = file_get_contents($remote_server, false, $stream_context); 
  
 return json_decode($data, true); 
}

客户端文件:

php模拟post上传图片实现代码

双击bat.bat文件就会在命令行运行pgtest.php

php模拟post上传图片实现代码

服务器处理客户端请求的文件目录[http://localhost:8080/phpClientSer/]:

php模拟post上传图片实现代码

login.php  登陆
get_imginfo.php  登陆成功后从数据库获取图片的名称、类型[jpg/png/gif]、路径等信息
get_stream.php  根据图片路径读取图片:

$img_url = $_POST['img_url']; 
$stream = file_get_contents($img_url); 
echo $stream;

create_img.php  接收客户端发送过来的二进制,创建新的图片: 

$img_stm = $_POST['img_stm']; 
$pdt_id = $_POST['pdt_id']; 
$img_style = $_POST['img_style']; 
 
$img_url = $_SERVER['DOCUMENT_ROOT'] . "upload2/w100/" . $pdt_id . $img_style; 
$file = fopen($img_url,"w+");//打开文件准备写入 
 
fwrite($file,$img_stm);//写入 
fclose($file);//关闭 
echo "ok";

服务器创建的新图片打不开:

php模拟post上传图片实现代码 

客户端gptest.php最后5行代码和服务器create_img.php的代码要改。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP+MySQL 制作简单的留言本
Nov 02 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
php使用递归计算文件夹大小
Dec 24 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 PHP
PHP7 foreach() 函数修改
Mar 09 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 #PHP
java微信开发之上传下载多媒体文件
Jun 24 #PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 #PHP
php微信开发之上传临时素材
Jun 24 #PHP
PHP微信开发之模板消息回复
Jun 24 #PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 #PHP
简单解析PHP程序的运行流程
Jun 23 #PHP
You might like
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Python回调函数用法实例详解
2015/07/02 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
python如何生成各种随机分布图
2018/08/27 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
jupyter 添加不同内核的操作
2021/02/06 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
自荐信范文
2013/12/10 职场文书
优秀学生评语大全
2014/04/25 职场文书
医院党员公开承诺书
2014/08/30 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
校本培训个人总结
2015/02/28 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL