服务器和客户端都是php语言
但是客户端不是网页,不在浏览器上运行,而是在命令行运行
我现在要做的是在客户端访问服务器,读取服务器上的图片,在客户端把图片的宽度变为100,然后再上传到服务器。
前两步都已完成:
1、读取服务器上的图片,转为二进制传到客户端,客户端用fopen、fwrite重新生成图片存放到客户端org/resouse目录下
2、再把org/resouse中的图片处理为宽度100存放到客户端org/w100目录下
3、最后一步要怎样重新把它上传到服务器呢?
前两步已经完成,可以忽略
客户端org/w100/目录下有图片:5k0ach.jpg,要怎样把这张图片上传到服务器?
注意:客户端不是网页,没有表单之类的界面,是在命令行运行的
客户端gptest.php的部分代码(省略登陆部分的,假设登陆成功,直接为psn_id赋值):
1 | <?php $psn_id = "1fbahh" ; $url = SERVER_URL . '/get_imginfo.php' ;
|
Salin selepas log masuk
check.php部分代码
1 | 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);}
|
Salin selepas log masuk
客户端文件:
双击bat.bat文件就会在命令行运行pgtest.php
服务器处理客户端请求的文件目录[http://localhost:8080/phpClientSer/]:
login.php 登陆
get_imginfo.php 登陆成功后从数据库获取图片的名称、类型[jpg/png/gif]、路径等信息
get_stream.php 根据图片路径读取图片:
1 | $img_url = $_POST [ 'img_url' ]; $stream = file_get_contents ( $img_url ); echo $stream ;
|
Salin selepas log masuk
create_img.php 接收客户端发送过来的二进制,创建新的图片:
1 | $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+" );
|
Salin selepas log masuk
服务器创建的新图片打不开:
客户端gptest.php最后5行代码和服务器create_img.php的代码要改
回复讨论(解决方案)
$file = fopen($img_url,"wb")
二进制写入
$file = fopen($img_url,"wb")
二进制写入
谢谢,但问题首先是这里:postData(),这里面传递文件的代码是关键,其次才是接收
如果传递过去的根本不是正确的二进制文件,怎么接收都无济于事
$file = fopen($img_url,"wb")
二进制写入
谢谢了,问题已经解决。但无关于$file = fopen($img_url,"wb"),而是postData()传递数据的方式有问题
参考 http://bbs.csdn.net/topics/370023047
$file = fopen($img_url,"wb")
二进制写入
谢谢了,问题已经解决。但无关于$file = fopen($img_url,"wb"),而是postData()传递数据的方式有问题
参考 http://bbs.csdn.net/topics/370023047
mime文件头?