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常用代码
Nov 23 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
PHP的autoload自动加载机制使用说明
Dec 28 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
php对文件进行hash运算的方法
Apr 03 PHP
PHP获取数组最大值下标的方法
May 12 PHP
php 三元运算符实例详细介绍
Dec 15 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 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
神族 PROTOSS 概述
2020/03/14 星际争霸
我的论坛源代码(五)
2006/10/09 PHP
第二节--PHP5 的对象模型
2006/11/16 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PDO::setAttribute讲解
2019/01/29 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
微信跳一跳游戏python脚本
2020/04/01 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
PHP统计代码行数的小代码
2019/09/19 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python关闭占用端口方式
2019/12/17 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
单位承诺书格式
2014/05/21 职场文书
2015年药店工作总结
2015/04/20 职场文书
关于开学的感想
2015/08/10 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python