制作了一个简单的图片上传程序,并放在服务器上,如下:
HTML代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图片上传</title>
</head>
<body>
<form action="save.php" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>
<input type="file" name="file" id="file">
</td>
</tr>
<tr>
<td>
<input type="text" name="mac" id="mac" value="请输入机器序号"onfocus="if (value =='请输入机器序号'){value =''}"onblur="if (value ==''){value='请输入机器序号'}">
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="上传" onclick="return checknull();">
</td>
</tr>
</table>
</form>
<script type="text/javascript">
function checknull(){
if(!document.getElementById('file').value){
alert('请上传图片');
return false;
}
if(document.getElementById('mac').value =='' || document.getElementById('mac').value=='请输入机器序号') {
alert('请输入机器序号');
return false;
}
return true;
}
</script>
</body>
</html>
PHP代码如下:
<?php
//想要连接的PC端电脑IP
$client = "clientip";
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br />"; //由表单file input的到$_FILES的值
}else{
//获取图片信息
$fileinfo =getimagesize($_FILES["file"]["tmp_name"]);
//正则表达式
$patten = '/^image\/(\w+)$/';
//匹配字符串
$preg =preg_match($patten, $fileinfo['mime'],$array);
//判定上传文件是否为图片
if(!$preg){
echo "<meta charset='utf-8'>";
echo "请上传图片,格式可以是:'GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP'中的任意一种类型";
}else{
$path = $_FILES["file"]["tmp_name"];
//将图片转为二进制数据流
$file_string = file_get_contents($path);
//临时文件名称并通过URL传回本地
$file_save_name = 'tem.'.$array[1];
$url='http://'.$client.'/client/getpic.php?filename='.$file_save_name;
//保存文件
file_put_contents($file_save_name, $file_string);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>确认上传</title>
</head>
<body>
<form action="<?php echo $url?>" method="post">
<img src="<?php echo $file_save_name?>" name="pic">
<input type="submit" name="submit" value="确认">
</form>
</body>
</html>
我在本地的WWW目录下面放上的PHP代码用于将服务器上刚才保存的图片下载到本地,代码如下:
<?php
//获取文件名
//$filename = $_GET['filename'];
$filename = "tem.png";
//服务器地址
$server = "serverpath";
$url = "http://".$server."/uploady/".$filename;
//虚拟数据流页面并将文件转为数据流
ob_start();
readfile($url);
$file_string = ob_get_contents();
ob_end_clean();
//保存文件到本地
if($file_string){
file_put_contents($filename, $file_string);
}else{
echo '获取失败';
}
?>
可以看到我在服务端有一个确认按钮调用本地电脑的PHP代码,这个在局域网上是可以实现的,但是当我将本地这个电脑移动到异地,连接到网络后,我应该怎么填写这个本地PC的IP,才能让我的服务器使用它上面的代码,完成图片自动保存到该电脑上呢?