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的栏目导航程序
Oct 09 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
php调用c接口无错版介绍
Mar 11 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
PHP常用的小程序代码段
Nov 14 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
详解Yii2.0 rules验证规则集合
Mar 21 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
webpack打包单页面如何引用的js
2017/06/07 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
Python卸载模块的方法汇总
2016/06/07 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
python多进程间通信代码实例
2019/09/30 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
linux面试相关问题
2013/04/28 面试题
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
任命书格式范文
2015/09/22 职场文书
员工工作心得体会
2019/05/07 职场文书