php上传图片到远程服务器并返回图片地址到本地显示
本示例将演示一个简单的上传图片到远程服务器,然后生成图片路径后通过提交的回调路径返回给本地服务器,最后将图片地址显示在前端页面。
本项目应用三个文件,即前端选取图片的页面,然后提交图片到远程服务器处理文件,返回前端页面的回调文件。
一、前端上传图片页面
upload_test.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Upload Image</title><script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body><!--注意这里的iframe标签--><iframe name="post_frame" style="display:none;"> </iframe><form id="photo_upload" action="upload_action.php" method="post" target="post_frame" enctype="multipart/form-data"> <table width="100%" cellspacing="0" cellpadding="0" border="0" ><tbody><tr> <th style="border-bottom:1px solid #D1E0EB;text-align: right;">主题封面图:</th><td style="border-bottom:1px solid #D1E0EB"><input type="file" id="file" name="opus" value="" width="200" /> <input style=" height: 40px;width: 45px;" type="submit" value="上传" name="submit" /> <span> 图片格式 jpg jpeg gif png </span><input type="hidden" name="callbackUrl" value="http://localhost/url_test/callback.php" /></td></tr></tbody></table></form><table width="100%" cellspacing="0" cellpadding="0" border="0" ><tr><th style="border-bottom:1px solid #D1E0EB;text-align: right;">封面图URL:</th><td style="border-bottom:1px solid #D1E0EB"><input type="text" id="cover_img_url" name="cover_img_url" size="120" readonly="readonly" /><span>* <span style=" height: 100px;" id="show_img"></span></span></td></tr></table></body>
</html>
这里需要注意当回调页面返回图片地址到前端页面时,需要iframe标签(这里我们将其隐藏),否则将会找不到要在页面显示的地方 <input type="text" id="cover_img_url" name="cover_img_url" size="120" readonly="readonly" />。
和一般的<form>标签相比多了一个target属性罢了,用于指定标签页在哪里打开以及提交数据。
而如果设置为iframe的name值,即"post_frame"的话,就会在该iframe内打开,因为CSS设置为隐藏,因而不会有任何动静。若将display:none去掉,还会看到服务器的返回信息。
上传文件时,form表单的method、 enctype属性必须和上面的代码一样,然后将target的值设为iframe的name,这样就可以实现无刷新上传文件。
<iframe name="post_frame" style="display:none;"> </iframe>
当选择图片提交时,还有一个隐藏域,即给远程服务器提交图片时,还需要提交回调路径,好让图片返回给本地服务器。(这里我们都是用本地服务器来进行测试)
<input type="hidden" name="callbackUrl" value="http://localhost/url_test/callback.php" />
二、远程服务器图片处理
upload_action.php
<?php
/*** 图片上传处理* User: CorwienWong* Date: 16-06-15* Time: 00:33*/
header("Content-type:text/html;charset=utf-8");// 配置文件需要上传到服务器的路径,需要允许所有用户有可写权限,否则无法上传成功
$uploadPath = 'uploads/';// 获取提交的图片数据
$file = $_FILES['opus'];// 获取图片回调路径
$callbackUrl = $_POST['callbackUrl'];if($file['error'] > 0)
{$msg = '传入参数错误' . $file['error'] . " ";exit($msg);
}
else
{// chmod($uploadPath, 0666);if(file_exists($uploadPath.$file['name'])){$msg = $file['name'] . "文件已经存在!";exit($msg);}else{if(move_uploaded_file($file['tmp_name'], $uploadPath.$file['name'])){$img_url = "http://localhost/url_test/".$uploadPath.$file['name'];$img_url = urlencode($img_url);$url = $callbackUrl."?img_url={$img_url}";// 跳转header("location:{$url}");exit();}else{exit("上传失败!");}}}
图片上传到到该页面后,保存并返回图片地址给回调页面。
三、回调页面返回图片地址到前端页面
回调页面获取到远程服务器传来的图片地址后,经过"window.parent.XXX"返回给前端页面。
callback.php
<?php##回调方法$img_url = $_GET['img_url'];// 返回数据给回调页面echo "
<script>window.parent.document.getElementById('cover_img_url').value='{$img_url}';</script>
";
如果我们的前端页面upload_test.html没有iframe标签,则不会返回找到ID为“cover_img_url”的输入框的值,会跳转到空白页。
四、上传到服务器的文件写入日志记录
写入日志:$file = $this->file = $_FILES[$this->fileField];// 要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个$log_file = '../log/log.txt';$time = date("Y-m-d H:i:s", time());$log_content = var_export($_FILES, true) ."Time:{$time} \r\n";file_put_contents($log_file, $log_content, FILE_APPEND);// 结果记录
array ('name' => 'myImage.jpg','type' => 'image/jpeg','tmp_name' => '/Applications/XAMPP/xamppfiles/temp/phpod5VA4','error' => 0,'size' => 249318,
)
array ('file' => array ('name' => 'myImage.jpg','type' => 'image/jpeg','tmp_name' => '/Applications/XAMPP/xamppfiles/temp/phppRvcVe','error' => 0,'size' => 249318,),
)Time:2016-09-10 17:32:30
其他上传相关示例:
php+ajax实现图片文件上传功能实例
php上传图片到远程服务器并返回图片地址到本地显示相关推荐
- Pycharm专业版申请免费学生激活连接远程服务器编译配置图片显示变量观察等
Pycharm专业版申请免费学生激活&连接远程服务器编译&配置图片显示变量观察等 利用学生身份申请JetBrains产品(Pycharm IDEA等)专业版激活 Pycharm专业版配 ...
- 七牛云 上传图片到七牛云并返回图片URL
七牛云 上传图片到七牛云并返回图片URL 鸣谢'追逐盛夏流年':https://blog.csdn.net/j1231230/article/details/80061834 在开发项目的时候,经常会 ...
- Java 上传图片至OSS并返回图片地址工具类可直接用
OSS上传图片并返回图片地址工具类 OSS上传图片并且返回地址工具类 可以直接拿去用 后续会继续更新 需要注意的点: 下面代码里的@Value里的几个值我是放在application.yml文件里的, ...
- Ckeditor and ckfinder 配置实现截图上传图片到远程服务器
Ckeditorand ckfinder 配置实现上传图片到远程服务器 1. 从ck官网下载两个文件. (文件夹解压后不必要的文件可以删除,samples.help 等以及skin皮肤文件夹 ...
- 获取服务器上图片的位置,怎么获取服务器上的图片地址
怎么获取服务器上的图片地址 内容精选 换一换 通过云服务器或者外部镜像文件创建私有镜像时,如果云服务器或镜像文件所在虚拟机的网络配置是静态IP地址时,您需要修改网卡属性为DHCP,以使私有镜像发放的新 ...
- 简单的二维码生成接口,自动生成二维码,返回图片地址
自动生成二维码,返回图片地址 本来不想写的,但是怕太久不写这个东西,就要荒废了,就先记录一下简单的东西 这里因为,返回地址的时候,通过了nginx ,我试了很多方法都抓取不到对应的IP地址, 就在ng ...
- 更改xshell远程服务器的终端字体颜色并突出显示用户名
目录 最终界面 1 更改xshell远程服务器的终端字体颜色 2 突出显示用户名 最终界面 1 更改xshell远程服务器的终端字体颜色 在桌面上新建一个文本文件,打开,将以下内容添加进去,保存,退出 ...
- 连接ArcGIS服务器错误:代理服务器从远程服务器收到了错误地址
连接ArcGIS服务器错误:代理服务器从远程服务器收到了错误地址 万年不在自己电脑上发服务,所以今天发服务的时候就遇到这个小问题. 第一反应,ArcGIS Server服务没开,屁颠屁颠去开了,满心欢 ...
- 淘淘商城学习笔记 之 上传图片到远程服务器,图片的回显出现的bug
最近在学习淘淘商城中用到的技术,感觉受益良多,遇到一个比较奇怪的bug调了好久,遂心乐之分享于诸君 bug情况是这样的:在商城的后台上传图片之后图片回显不出来,右键查看链接,发现链接被加了localh ...
最新文章
- LTE各场景下的密钥处理
- bootstrap时间控件
- 【Ynoi2011】成都七中【树论】【点分树】【离线】【树状数组】
- r语言读写word_R语言:在word中插入ggplot
- 通过一个例子来理解二维码纠错机制
- springboot requestmapping 正则_SpringBoot三招组合拳,手把手教你打出优雅的后端接口...
- 帆软高级函数应用之数组函数
- java jre 1.8_安装java1.8和配置环境变量
- python部署阿里云_python部署到阿里云
- 带SN切换流程_贴片电阻生产工艺流程简介
- ubuntu升级显卡驱动
- 装IDT声卡时总是说检测到的硬件不受此IDT软件程序包支持安装将终止
- 完美.PCK文件不完全详解
- h5页面 请在微信客户端打开链接_电脑版微信网页授权提示请在微信客户端打开链接?...
- HDS 高端存储TC原理和配置总结
- Swift 类和结构体总结
- windows 系统安装苹果操作系统
- win10玩武装突袭3一会就闪退的解决方法
- Floyd算法、Dijkstra算法例题
- 【VBA】提取 Word|PPT|Excel 批注实例(Excel一键导入办公文档中的批注)