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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
PHP 数组实例说明
Aug 18 PHP
PHP+ACCESS 文章管理程序代码
Jun 21 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 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
用Socket发送电子邮件(利用需要验证的SMTP服务器)
2006/10/09 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
上课说话检讨书大全
2014/01/22 职场文书
行政内勤岗位职责
2014/04/07 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android
Nginx反向代理学习实例教程
2021/10/24 Servers