http://blog.51yip.com/php/686.html
一,利用fsockopen来上传文件
以前我写过一篇关于socket通信原理的博文http://blog.51yip.com/php/673.html
有
兴趣的朋友可以看看,前面讲的那篇博文,socket的服务器和客户端都是要用php命令来运行的。平常我们上传文件是浏览本地文件,通过一个php程序
将文件上传一个地方,这个时候我们用php命令来运行php程序就不方便了。这个时候我们可以用fsockopen来打开一个socket通道,并且可以
通过浏览器来访问页面。下面有一个例子,大家可以试一下。
二,upload.html
-
<
html
>
-
<
body
>
-
<
form
action
=
'image.php'
method
=
'post'
name
=
'form'
enctype
=
'multipart/form-data'
>
-
<
input
type
=
'file'
name
=
'photo'
>
-
<
input
type
=
submit
value
=
'submit'
>
-
</
form
>
-
</
body
>
-
</
html
>
浏览本地文件上传到中间文件image.php
三,image.php来向socket传送数据
-
<?php
-
$fp
=
fsockopen
(
"127.0.0.1"
, 10008,
$errno
,
$errstr
, 10);
-
-
$array
=
$_FILES
[
'photo'
];
-
-
if
(!
$fp
){
-
echo
"open fail"
;
-
}else
{
-
-
if
(!
empty
empty
(
$array
)){
-
-
$str
=
'filename:'
.
$array
[
'name'
];
-
fwrite($fp
,
$str
);
-
$filename
=
$array
[
'tmp_name'
];
-
$handle
=
fopen
(
$filename
,
"r"
);
-
-
$contents
=
fread
(
$handle
,
filesize
(
$filename
));
-
-
fwrite($fp
,
$contents
);
-
}
-
echo
$fp
;
-
}
-
fclose($fp
);
-
?>
他的作用是和SOCKET服务器,建立通信,将数据输送到socket通道中
四,server.php接收到数据
-
<?php
-
-
$tcp
=
getprotobyname
(
"tcp"
);
-
$socket
= socket_create(AF_INET, SOCK_STREAM,
$tcp
);
-
socket_bind($socket
,
'127.0.0.1'
, 10008);
-
socket_listen($socket
);
-
-
-
$buffer
=
"connect"
;
-
$path
=
"/home/zhangy/www/test/"
;
-
while
(true) {
-
-
$connection
= socket_accept(
$socket
);
-
if
(!
$connection
){
-
echo
"connect fail"
;
-
}else
{
-
echo
"Socket connected\n"
;
-
-
if
(
$buffer
!=
""
) {
-
echo
"send data to client\n"
;
-
socket_write($connection
,
$buffer
.
"\n"
);
-
echo
"Wrote to socket\n"
;
-
} else
{
-
echo
"no data in the buffer\n"
;
-
}
-
-
-
while
(
$flag
= @socket_recv(
$connection
,
$data
, 2048, 0)){
-
if
(false !==
strpos
(
$data
,
'filename:'
)){
-
$filename
=
substr
(
$data
,9);
-
-
$filename
=
$path
.
$filename
;
-
-
$fp
=
fopen
(
$filename
,
"wb"
);
-
continue
;
-
}
-
fwrite($fp
,
$data
);
-
}
-
fclose($fp
);
-
}
-
-
socket_close($connection
);
-
-
printf("Closed the socket\n"
);
-
}
-
?>
他的作用是接收数据,并将数据存储存起来
分享到:
相关推荐
php 大文件带进度的上传,一直是一个令php程序员很苦恼的问题。查询baidu 、Google ,大体做带进度的上传方式为:flash+php,socket,apc+php等,下面我介绍了apc +php+ajax制作的带进度的上传,并贴出源码,希望对...
php利用fsockopen GET/POST提交表单及上传文件,具体内容如下 1.GET get.php <?php $host = 'demo.fdipzone.com'; $port = 80; $errno = ''; $errstr = ''; $timeout = 30; $url = '/socket/getapi.php'; $...
实例013 Linux下实现PHP支持Socket 20 实例014 Linux下实现PHP支持mysqli扩展技术 21 实例015 开机自动启动Apache服务 21 实例016 开机自动启动MySQL服务 22 实例017 Linux下发布“读者之家”网站 22 1.3...
***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本*** NC(Netcat) 用于提交数据包 DOS界面下运行: NC -vv www.***.com 80<1.txt -vv: 回显 80: www端口 1.txt: 就是你要发送的...
39. 文件上传处理 40. 使用远程文件 41. 连接处理 42. 数据库永久连接 43. 安全模式 44. PHP 的命令行模式 VI. 函数参考 I. .NET 函数 II. Apache 特有函数 III. APC 可选 PHP 缓存 IV. APD 高级 PHP 调试器 V. ...
一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java...
一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...
8.11 将手机文件上传至网站服务器 8.12 移动博客发布器 8.13 移动RSS阅读器 8.14 远程下载安装Android程序 8.15 手机下载看3gp影片 8.16 访问网站Login API 8.17 地震速报 8.18 通过Web API动态更改手机Spinner控件 ...