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数据库的简单实例
Aug 26 PHP
php检测useragent版本示例
Mar 24 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
php好代码风格的阶段性总结
Jun 25 PHP
thinkPHP实现多字段模糊匹配查询的方法
Dec 01 PHP
php批量删除操作代码分享
Feb 26 PHP
php 中phar包的使用教程详解
Oct 26 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
删除重复数据的算法
2006/11/23 Javascript
JS模拟多线程
2007/02/07 Javascript
javascript的对话框详解与参数
2007/03/08 Javascript
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
采用call方式实现js继承
2014/05/20 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python压缩和解压缩zip文件
2015/02/14 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
基于python指定包的安装路径方法
2018/10/27 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
python如何删除列为空的行
2020/07/17 Python
附答案的Java面试题
2012/11/19 面试题
法律专业应届本科毕业生求职信
2013/10/25 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
体育节口号
2014/06/19 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书