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和ACCESS写聊天室(三)
Oct 09 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
CURL状态码列表(详细)
Jun 27 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
php实现格式化多行文本为Js可用格式
Apr 15 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
php封装json通信接口详解及实例
Mar 07 PHP
yii2多图上传组件的使用教程
May 10 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 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
用PHP实现小型站点广告管理(修正版)
2006/10/09 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
用htc组件制作windows选项卡
2007/01/13 Javascript
$()JS小技巧
2007/07/21 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
javascript实现表单验证
2016/01/29 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python利用Beautiful Soup模块搜索内容详解
2017/03/29 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
python设置环境变量的作用整理
2020/02/17 Python
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
初三政治教学反思
2014/01/30 职场文书
高一军训的心得体会
2014/09/01 职场文书
纪念9.18事变演讲稿
2014/09/14 职场文书
优秀党员先进材料
2014/12/18 职场文书
运动会100米广播稿
2015/08/19 职场文书
《青山不老》教学反思
2016/02/22 职场文书