跨域名上传图片

  在我写一些小功能或者在上一篇文章提到的网站根据接口开发,这样就会遇到上传图片可能会跨域名。

  比如,我想在我的电脑上写一些程序,给同在局域网内的同事用,比如用“联图”生成二维码。在二维码上添加的logo必须是一张在线图片,也就是说需要一台服务器。但是我不想把程序放到服务器上去,图片的话,无所谓。这样的话,我就需要把同事上传的图片,先post到我的电脑上来,然后通过我电脑的wamp服务器再post到服务器上去,因为我和同事是局域网,上传时间基本为0,只有我上传到服务器需要点时间。所以整个过程在时间上并没有太大的问题。

  那么现在我就要在我电脑上的服务器上写一些方法,将同事上传的图片,我再上传到服务器上。我使用的是curl模拟post图片到服务器上去。

  这是一个我写的类,很简单,和大家分享一下,在服务器端你只需要写一个图片接受程序就可以了。

<?php
class postCurl{
    public $Url;            //请求链接
    public $Array;          //post的数据
    public function __construct() {
    }
    public function simulationPost($url, $array){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        //强制使用IPV4协议解析域名,否则在支持IPV6的环境下请求会异常慢
        @curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
        if ($array){
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $array);
        }

        $response = curl_exec($ch);
        curl_close($ch);
        //去除头部信息
        $response = strstr($response, ‘{‘);
        return $response;
    }
    public function simulationPostImg($url,$img){
        //生成临时图片文件
        $picTypeArray = explode(‘.‘, $img[‘name‘]);
        $count = count($picTypeArray);
        --$count;
        $picType = $picTypeArray[$count];                            //图片后缀名
        $newPicName = date(‘Ymdhis‘).‘.‘.$picType;                         //新的文件名
        $fileName = ‘./upload/QRlogo/‘.$newPicName;                   //临时图片文件名
        if(!is_uploaded_file($img[‘tmp_name‘])){
            $this->ajaxReturn(‘‘,‘图片上传错误‘, ‘-1‘);
        }else{
            if(!move_uploaded_file($img[‘tmp_name‘], $fileName)){
                $this->ajaxReturn(‘‘,‘图片上传错误1‘, ‘-2‘);
            }else{          //这里的意思是,要确定图片的绝对地址,相对地址,图片是无法上传的
                $data[‘mypic‘] = ‘@‘.YII_UP.‘/upload/QRlogo/‘.$newPicName;
                $uploadImg = $this->simulationPost($url, $data);
                unlink($fileName);                                //删除临时图片
                return $uploadImg;
            }
        }
    }
}

原理其实很简单,就是先在我电脑上的服务器先存这张图片,然后通过将这张图片的@绝对路径提交给服务器,就可以提交到服务器。

跨域名上传图片

时间: 2024-10-17 10:05:28

跨域名上传图片的相关文章

跨域上传图片的尝试过程,最终成功了。哈哈

关于这个跨域上传图片的问题,其实去年底的时候就该去实现的,因为老板朝三暮四,一会儿让做这个,一会儿看那个,就耽误了.因为这个过程花费了我整整一天的时间,我认为有必要记录下来. 首先,项目是一个ERP,针对的是公司的一个小型电商的网站.项目经理让我搭建一个图片服务器, 当时也是为了完(尝)成(尝)任(新)务(鲜),用的都是当时从没接触过的.通过百度就选择了 Nginx + Nodejs + express + ImageMagick 来实现的. 当时还简单看了一下淘宝的TFS(Taobao Fil

让 umeditor 支持跨域上传图片

事实上,umeditor 上传图片采用的是 form+隐藏iframe方式,已经能做到无刷新跨域上传.但小小遗憾的是做的并不完美,上传图片后,反馈的json信息,js并不能读取.原因在于,js不能操作跨域的iframe. 1 var r = this.contentWindow.document.body.innerHTML; 此句代码在FF Chrome上都会报错.浏览器的这种限制,可以通过两个方式来解决 换成flash上传 主页跟iframe页都设置 document.domain . 第一

ueditor富文本编辑器跨域上传图片解决办法

在使用百度富文本编辑器的过程中,如果是有一台单独的图片服务器就需要将上传的图片内容放到图片服务器,也就是比如在a.com的编辑器上传图片,图片要保存到img.com的跨域上传图片功能,而在ueditor官方文档中说不支持单图上传的跨域, 网上查了一下各种花里胡哨,一顿操作猛如虎,比如加document.domain,配置全域名的等等都是然并卵,我仔细研究了一下ueditor的demo文件,相出了一个折中办法,很简单只需要修改demo中两个地方的代码外加写一个上传接口即可. 首先引入页面uedit

mvc4实现跨域名cokkie共享。

网上搜一下都很多,按上面的代码发现无法正常共享.我们的站点是使用IIS7 经过一段时间研究.实现了,.特将代码共享出来,首先是c#代码 /// <summary> /// 登录成功后,设置COOKIE /// </summary> /// <param name="entity"></param> public void SaveUserFormsCookie(LoginUser entity, bool isRememberMe = f

session跨域和ajax跨域名

后台跨域和ajax跨域名: 后台跨域: www.baidu.com   主域名(一级域名一般以www开头) news.baidu.com   二级域名 (a.test.com和b.test.com有相同的域,和test.a.com不是同一个域) 同一个域下可以使用setcookie( '名字' , 'session_id' , 'time()+3600' , '/' , '域' );来存储session_id. 例如:a.php在a.test.com下    b.php在b.test.con下

ajax 跨域名调用

在ajax 中要跨域名 请求的时候要注意 1. dataType: 'jsonp', 2. jsonp: 'callback', <script type="text/javascript"> $(document).ready(function () { var urle = "http://www.hao123.com"; $.ajax({ url: urle, type: 'GET', dataType: 'jsonp', jsonp: 'call

IFRAME跨域名的解决方法,终结版(小张.NET原创)[摘自 西部数码]

以前碰到此类问题很郁闷,MS为什么开发出这么个鸟IE,让这些人不得不跟着他走,后来想了想,也是,为了安全期间,还是要加上限制的,要不,别人可以随便的改你的网页内容,等等...好了,其它的废话不说了,看看下边的吧:记得要将域名指为域名,而不是WWW或者其它的,例:shagndu8.com 而不能指向www.shangdu8.com 1.请在父网页上加上以下代码:1<SCRIPT LANGUAGE="VBScript">2    document.domain = "

java 结合jQuery实现跨域名获取数据

一.什么是跨域? 由于浏览器出于安全的考虑,采取了同源策略的限制,使得jQuery无法直接跨域名互相操作对象或数据.例如:a.com 域名下的 a.html页面利用jQuery无法操作b.com域名下b.html页面的对象或是数据,并且默认情况下也不能操作test.a.com域名下的 test.html的对象或是数据.只要满足下面条件的jQuery都会视为跨域名: 1.主域相同,子域不同,如xxx.aaa.com和yyy.aaa.com 2.域名相同,端口不同,如xxx.aaa.com:8000

&#183;基于thinkphp5.0和百度编辑器UMeditor 跨域上传图片实现

1.下载两者源码: 2,简单配置 :   a. 一套thinkphp框架是显示前端界面,搭配编辑器环境.对应域名为 http://tp.com:  这是前端界面配置 但是还要修改一下umeditor.config.js 文件    这里配置那个URL ,我思考了很久         我是这么想的  本地站点域名配置到了www/tp5/public位置 ,现在是要实例编辑器加一个路径,而编辑器的文件位置就在public下面: 在此情况下 编辑器会在界面正常显示: 好接下来考虑的问题就是图片上传了.